import java.util.Random;
import java.util.Scanner;
public class RandomPrime {
/**
* @param args
* 随机生成一个n bit位的长质数。函
* 输入:随机质数的bit位长度为n
* long createRndPrime(int n)
* 输出:nbit位长度的质数
*/
public static void main(String[] args) {
int m;
Scanner scan = new Scanner(System.in);
System.out.print("请输入该随机数的bit位: ");
m = scan.nextInt();
System.out.println(m+"bit位的随机质数是: "+createRndPrime(m));
}
public static long createRndPrime(int n){
int max = 0,min = 0;
Random num = new Random();
for(int i=0;i<n;i++){
max += (long) Math.pow(2, i);
}
min = (int)Math.pow(2, n-1);
long Rannum = num.nextInt(max-min+1) + min;
if(isPrime(Rannum) == 1){
return Rannum;
}
return createRndPrime(n);
}
public static int isPrime(long num1){
for(int a = 2;a<Math.sqrt(num1);a++){
if((Math.pow(a, num1-1) % num1)==1){
return 1;
}
}
return 0;
}
}
java随机生成一个n bit位的长质数
最新推荐文章于 2022-11-13 15:25:26 发布