第二周作业-------随机生成一个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;
}
}
运行结果如下:
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;
}
}
运行结果如下:
相关文章推荐
- 第二周作业:“RSA”、“数字签名”、“公钥”、“DES“的解释; 判断一个正整数是否为质数的算法;随机生成一个n bit位的长整数
- 第二次编程作业:判断一个正整数是否为质数的算法和 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数(第二周作业2.2)
- 第二周作业2.2——随机生成一个n bit位的长整数
- 第二周作业---随机生成一个n bit位的长整数
- 第二周作业-----随机生成一个n bit位的长整数
- 第二周作业2——随机生成一个n bit位的长整数
- 第二周作业 2.2: 随机生成一个n bit位的长整数。
- 第二周作业03 -- 随机生成一个n位的二进制数(质数)对应的长质数
- 第二周__随机生成一个n bit位的长整数
- 2.3:随机生成一个n bit位的长质数。
- java随机生成一个n bit位的长质数
- 第二周作业02 -- 随机生成一个n位的二进制数对应的长整数
- 随机生成一个n bit位的长质数。函数前面如下
- 2.3随机生成一个n bit位的长质数
- 随机生成一个n bit位的长质数
- 随机生成一个n bit位的长质数
- 第三周作业: 随机生成一个n bit位的长整数
- java随机生成一个n bit位的长质数
- 2.3 随机生成一个n bit位的质数