Nol*_*oli 5 java algorithm primes
这是我找到素数之和的代码.它对一些低数字很好但是如果它2000000(200万)它永远不会结束.任何人都可以帮助我吗?
import java.math.BigInteger;
public class Problem010{
public static void main(String[] args) {
BigInteger sum = new BigInteger("2");
//for (int i=3; i<2000000; i++) {
for(int i=3; i<10; i++){
for (int j=2; j<i; j++){
if (i % j == 0)
break;
else if (i == j+1){
sum = sum.add(BigInteger.valueOf(i));
}
}
}
System.out.println("Sum = "+sum);
}
}
Run Code Online (Sandbox Code Playgroud)
你的答案是142913828922怎么回事?
我刚刚改变了你的算法:
public static void main(String[] args) {
BigInteger sum = new BigInteger("2");
boolean isPrime = true;
for (int i=3; i<2000000; i++) {
double aa = Math.sqrt((double)i);
for (int j=2; j<=aa; j++){
if (i % j == 0){
isPrime = false;
break;
}
}
if(isPrime){
sum = sum.add(BigInteger.valueOf(i));
}
isPrime = true;
}
System.out.println("Sum = "+sum);
}
Run Code Online (Sandbox Code Playgroud)
而不是通过从2到i的所有数字,我只是从2到sqrt(i),这大大改善你的代码运行时间:)
| 归档时间: |
|
| 查看次数: |
4425 次 |
| 最近记录: |