我可以更快地找到完美数字吗?我试图用数组和另一种算法让它更快,但没有一个让它更快。
public class Perfect{
static long perfectNumber;
static long startTime = System.nanoTime();
static long endTime;
static long mersenne;
public static void main(String[] args) {
long p = 2;
while (p < 32) {
if( p % 2 == 0&&p!=2){
p++;
}
else{
if (isPrime(p) == true) {
mersenne = (long) (Math.pow(2, p) - 1);
if (isPrime(mersenne) == true) {
perfectNumber = (long) Math.pow(2, (p - 1)) * mersenne;
System.out.println(perfectNumber);
}
}
p++;
}
}
endTime = System.nanoTime();
System.out.println("Time: " + (endTime - startTime) + "ns"
);
}
private static boolean isPrime(long testPrime) {
for (long i = 3; i < Math.sqrt(testPrime); i += 2) {
if (testPrime % i == 0) {
return false;
}
}
return true;
}
}