public static void algorithmOne(int n){
long startTime = System.currentTimeMillis();
search:
for (int possiblePrime = 2; possiblePrime <= n; possiblePrime++){
for (int divisor = 2; divisor < possiblePrime; divisor++)
if ( possiblePrime%divisor == 0 && possiblePrime != divisor )
continue search;
System.out.println(possiblePrime);
}
long endTime = System.currentTimeMillis();
System.err.println(endTime - startTime);
}
这是一种查找素数的方法我无法解决为什么我没有达到“System.err.println(endTime - startTime);”线。
答案 0 :(得分:1)
我猜你 达到你的时差println(),但你没有看到它在你期望的地方。这是因为你要将它打印到stderr - 所以你不能保证它会在所有println()之后附加到标准输出。
尝试打印到stdout而不是......
至于你的素性测试算法 - 看看these两个questions关于决定素数(那里有链接)。另外this讨论了找到素数因子,这不是同一个问题,但有一些你可能感兴趣的见解。具体来说,请考虑以下因素:
sqrt(n)
,好像a是n的因子,那么n / a也是如此。这是“简单的东西”,你可以做更多的事情。但是,真的,你为什么要自己写一个素数测试?你可以使用existing code。
答案 1 :(得分:1)
试试这个:
long startTime = System.nanoTime();
search: for (int possiblePrime = 2; possiblePrime <= 10; possiblePrime++) {
for (int divisor = 2; divisor < possiblePrime; divisor++)
if (possiblePrime % divisor == 0 && possiblePrime != divisor)
continue search;
System.out.println(possiblePrime);
}
long endTime = System.nanoTime();
System.out.println(startTime);
System.out.println(endTime);
System.out.println("Total time taken is : " + (endTime - startTime));