您的位置:首页 > 其它

第二周作业-------随机生成一个n bit位的长质数

2014-03-19 22:07 316 查看
import java.util.Random;  

import java.util.Scanner;  

  

public class longzs{  

  

    public static void main(String[] args) {  

        System.out.print("请输入随机生成n bit位:");  

          

        Scanner scanner=new Scanner(System.in);  

        int num= scanner.nextInt();  

        while(true){  

            long random= createRndInteger(num);  

            int result=isPrime(random);  

            if(result==1){  

                 System.out.println("随机生成的"+num+"bit位的长质数是:"+random);  

                 break;  

            }else{  

                 System.out.println("生成的不是质数,继续生成.....");  

            }  

        }  

      

    }  

      

    public static  long createRndInteger(int n){  

        int[] a={0,1};  

        StringBuilder SB=new StringBuilder();  

        Random random=new Random();  

        if(n==1){  

            return a[random.nextInt(a.length)];  

        }else{  

            SB.append(1);  

            for(int i=0;i<n-1;i++){  

                SB.append(a[random.nextInt(a.length)]);  

            }  

            System.out.println("随机生成的"+n+"bit位的二进制数是:"+SB.toString());  

            long num=Long.parseLong(SB.toString(),2);  

              

            return num;  

        }  

    }  

    public static  int isPrime(long a){  

        if(a==1){  

            return 1;  

        }  

         for(int i=2;i<Math.sqrt(a);i++){  

            if(a%i==0){  

                return 0;  

            }  

          }  

         return 1;  

    }  

}  

运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 质数