【发布时间】:2017-02-06 17:13:11
【问题描述】:
我要计算0到N区间内的素数个数。问题是当N>100000时程序运行很慢。
int main(){
long int i, j, n,isPrime;
long int N, count;
N = 10000000;
count = 0;
for(i = 2; i <= N; i++){
isPrime = 0;
for(j = 2; j <= i/2; j++){
if(i % j == 0){
isPrime = 1;
break;
}
}
if(isPrime==0 && N!= 1)
/*printf("%d ",i);*/
if(isPrime==0 && N!= 1)
count++;
}
printf(" %li ", count);
getch();
return 0;
}
【问题讨论】:
-
我们不是代码审查网站。
-
首先考虑一个算法,例如Sieve of Eratosthenes。它将为您提供一些关于是什么使算法或多或少高效的见解。
标签: c