Cómo encontrar el nth prime en C

Esta aplicación recibirá un número n . Después de recibir este número, el progtwig debe mostrar el número n primo en la lista de números primos. Por ejemplo, si el usuario ingresa 3 , se supone que el progtwig muestra 5 , porque 5 es el tercer número primo que comienza en 2 . Sé que algo está mal con mi código, pero no sé dónde está el problema y cómo puedo solucionarlo.

 #include  int main() { int n, i, flag, prime; int counter = 1; scanf("%d", &n); if (n == 1) prime = 2; else do{ prime = 3; for (i = 2; i < prime; i++) { flag = 1; if (prime % i == 0) { flag = 0; } } if (flag == 1) counter++; prime++; } while (counter != n); if (counter == n) printf("%d\n", prime); return 0; } 

Repare la muestra de rests de su póliza de esta manera:

 #include int main(void){ int n, i, flag, prime; int counter = 1; scanf("%d", &n); if (n == 1) prime = 2; else { prime = 1; do{ prime += 2; flag = 1; for (i = 3; i < prime; i+=2){ if (prime % i == 0) { flag = 0; break; } } if(flag == 1) counter++; } while (counter != n); } printf("%d\n", prime); return 0; } 

Está restableciendo el indicador a 1 cada vez que pasa por el bucle, por lo que ‘indicador’ solo le dirá si prime es divisible por “prime-1”, que por supuesto nunca lo es.