寻找质数,我哪里错了?
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。
所以...它适用于小数字,但如果 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。