我编写了一个代码,它返回值低于 200 万的所有素数的总和。但结果需要花费大量时间(等待 30 分钟才能得到答案)。
谁能建议如何使算法更有效?
public static void main(String[] args){
int i,primeNum=1,sumPrime=0,c=0;
while (primeNum<2000000){
int factors=0;
for(i=1;i<=primeNum;i++){
if((primeNum%i)==0) {
factors++; // total number of factors
}
}
if(factors==2){
if(primeNum<2000000){
sumPrime=primeNum+c;
c=sumPrime;
}
System.out.println(primeNum);
}
primeNum++;
}
System.out.println(sumPrime);
}