// primesg.c generate a file of primes #include <stdio.h> static long int primes[500001]; static int np = 0; // initially, first prime is 2 at index zero static int is_prime(int i); static int numb = 500000; int main(void) { FILE * outp; int i, j, k, kk, ix, icount, sum; long fct; printf("primesg.c running \n"); primes[0] = 2; printf("%d th prime is %ld \n", 1, primes[0]); for(i=3; np<numb; i++) { is_prime(i); } printf("%d th prime is %ld \n", np+1, primes[np]); outp = fopen("primef.h","w"); fprintf(outp, "// primef.h\n"); fprintf(outp, "static int np = %d; \n", np); fprintf(outp, "static long int primes[]={ \n"); for(k=0; k<numb-1; k++) { fprintf(outp,"%ldl, ", primes[k]); if(k%7==0) fprintf(outp,"\n"); } fprintf(outp,"%ldl};\n", primes[k]); printf("primesg.c finished, primef.h written \n"); return 0; } static int is_prime(int i) { int j; static int kp = 10; for(j=0; j<=np; j++) if(i%primes[j] == 0) return 0; np++; primes[np] = i; // build list of primes if(np+1==kp) { printf("the %dth prime is %d \n", kp, i); if(kp<100000) kp = kp*10; else kp = kp+100000; } return 1; // does not need to be used or printed } // end is_prime