Can I make it faster to find perfect numbers? I tried to make it faster with array and another algorithm, but none made it faster.
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;
}
}