This is a program testing for prime numbers in a specific range,using an .in file and writing to an .out one.
My question is why after a certain range of number e.g.when i set 234 to 234353 it outputs giberish?Also any ideas to NOT have a space character after the last number would be apreciated because my method obviously is wrong for some reason..
Code:
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;

bool ISPRIME(int K)
    {
      
      if (K == 2)
            return false;
             if (K % 2 == 0)
            return false;
            if (K%3==0&&K!=3)
            return false;
            if (K%5==0&&K!=5)
            return false;
            if (K%7==0&&K!=7)
            return false;

     

      for (int d = 11; d <= (int)sqrt((double)K); d=d+2)

            if (K % d == 0)

                  return false;

      return true;


  
  
  
  
     }
int main(){
int N;
int M;


FILE *read;

read = fopen ( "function.in" , "r" ) ;


fscanf ( read , "%d" , &N ) ;

fscanf ( read , "%d" , &M ) ;
int K = ( N < M ) ? (N+1) : (M+1) ;

int d = ( N < M ) ? (M-1) : (N-1) ;


fclose(read);
FILE *write;
write=fopen("function.out","w");
while (K<=d)
{
    
             if (ISPRIME(K)==true&&K==d) 
                           fprintf(write,"%d",K);
              
              else if(ISPRIME(K))
              {fprintf(write,"%d",K);
fprintf(write," ");}


K++;


}

fclose(write);
return 0;
}