寻找质数,我哪里错了?

Finding Primes, where did I got wrong?

所以...它适用于小数字,但如果 temp 大于 1000,它只打印 0 或随机数...

#include <stdio.h>

int main() {
    int primes[10001];
    primes[10000] = 0;
    int i,temp;
    int n = 2;
    temp = 0;
    while(temp<=1000){
        for(i=2; i<n; i++){
            if(n%i == 0){
                goto Exit;
            }
        }primes[temp] = n; temp ++;
        Exit:
        n ++;
    }
    for(i=0; i<10001; i++){
        printf("%d\n",primes[i]);
    }
    return 0;
 }

The 1,000th prime is 7919. The 10,000th prime is 104,729。 在某些系统上,int 是 16 位 (65,535)。这足以容纳 1,000 个素数,但不足以容纳 10,000 个素数。尝试将所有 int 变量更改为 long 变量。

你的循环条件是temp<=1000。所以当 temp > 1000 时你的循环不起作用。我认为你应该在循环条件中给出 10000 而不是 1000。