问题描述:
法国科学家梅森尼对这类形如2^n-1的素数特别感兴趣,做过很多有意义的工作,后人就把此类数命名为梅森尼数。
已经证明了,如果2^n-1是素数,则幂指数必须是素数,然而,反过来并不对,当n是素数时,2^n-1不一定是素数。
编程找出指数n在[2,50]中的梅森尼数。
public class Main {
public static void main(String[]Args){
for(int n=2 ; n<=50 ; n++){
//确保n为素数 且2^n-1也是素数
if(isPrimeNum(n)&&isPrimeNum((int)(Math.pow(2, n)-1))){
System.out.printf("2^%d-1=%d \n",n,(int)(Math.pow(2, n)-1));
}
}
}
public static boolean isPrimeNum(int a){ //判断是否是素数
for(int i=2 ; i<=Math.sqrt(a); i++){
if(a%i==0){
return false;
}
}
return true;
}
}