【Java自学】 梅森素数

 1 package codeTask_FangFa;
 2 //5.28       梅森素数。  跑起来有些慢,先丢在这了。
 3 public class MeiSenSuShu {
 4   public static void main(String[] args){
 5     System.out.println("P            2^P-1");
 6     int number=2;
 7     for(int p=0;p<=31;number++){
 8           if(isSuShu(number)){
 9               if(isMeiSenSuShu(number)){
10                   p = getP(number);
11                   System.out.printf("%8d",p);
12                   long sum = (long)(Math.pow(2, p)-1);
13                   System.out.printf("%8d\n",sum);
14               }
15           }
16     }
17   }
18   
19   public static boolean isSuShu(int number){    //是素数就true
20       for(int i =2;i<=number/2;i++){
21           if(number%i==0)
22               return false;
23       }
24       return true;
25   }
26   
27   public static boolean isMeiSenSuShu(int number){              //是梅森素数就true
28       for(int p = 0;p<1000;p++){
29           if(Math.pow(2, p)==number+1)
30               return true;
31       }
32       return false;
33   }
34   
35   public static int getP(int number){                          //     得到P
36       for(int p =0;p<1000;p++){
37           if(Math.pow(2, p)==number+1)
38               return p;
39       }
40       return -1;
41   } 
42 }

 

转载于:https://www.cnblogs.com/3-xblog/p/5034512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值