任务是找到 p <= 31 的所有梅森素数并显示在表格中:
p 2^p-1
--- ----
2 3
3 7
5 31
...
到目前为止,我的结果是这段代码:
public class PE28MersennePrimeVer2 {
public static void main(String[] args) {
System.out.println("p\t2^p - 1");
for (int number = 2; number <= 31; number++) {
if (isPrime(number)) {
int mersennePrime = (int)(Math.pow(2, number)) - 1;
if (isPrime(mersennePrime)) {
System.out.print(number + "\t" + mersennePrime + "\n");
}
}
}
}
public static boolean isPrime(int number) {
if ((number == 1) || (number == 2)) {
return true;
}
for (int i = 2; i <= number/2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
p 的输出最高为 19,永远不会达到 31。我做错了什么?