的任务是找到所有的梅森与对< = 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.我做错了什么?
你有非常奇怪的素数检查算法。你应该检查sqrt(数字)不超过数字/ 2 –
什么是梅森素数? –
@SamIam:你试过Google搜索吗?有一个专门用于梅森素数的网站(http://www.mersenne.org/),维基百科和MathWorld都有关于它们的信息。 – mellamokb