Proyecto Euler 7 en C

Sé que también hay muchos temas sobre esto en diferentes foros, pero mi problema es el siguiente:

P 1. Para el problema 7 de Euler (encontrar 10001st prime) este es mi código que pensé por mi cuenta.

#include  int main() { int i,j,k=0,m=0,num; for(i=1;m<10001;i++) { k=0; for(j=2;j<i;j++) { if(i%j!=0) k++; } if(k+2==i) { m++; num=i; } } printf("%d %d",num,m); } 

Este problema debería mostrar 10000 primo (m <10001) pero muestra el milenario 1er, ¿por qué?

El bucle se rompe cuando m es 10001, lo que explica su impresión de 10001 para m . Como m comienza desde 0 , imprime el 10001st prime. En su código, el bucle se ejecuta desde 0...10000 (10001 veces).

Cambie la condición a m<10000 es decir, el bucle se ejecuta desde 0...9999 (10000 veces) y m al final del bucle tendrá 10000 .

Intente implementar el Tamiz de Eratóstenes porque omitirá la comprobación de todos los múltiplos del número primo.