我在想如何随机取一个质数。
我的意思是,结果只能是一个质数。
我已经创建了一个方法checkPrime(int a, int b)来检查数字是否为质数。
然后,我从0循环到256并搜索质数。
在那之后,我必须随机得到其中一个质数。
从我下面的部分代码中,它输出了结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
System.out.println("Prime number: ");
for(int a = 0; a < 256; a++){
boolean checkIt = checkPrime(a, 5); //check whether the number is prime or not
if(checkIt){
System.out.print(a + " ");
}
}我期望的结果是只有一个质数。可能是3,43,17,31,等等。
我必须做些什么才能解决这个问题?
发布于 2014-04-16 17:44:12
如果愿意,您可以停止循环的执行;因此,您可以这样做:
System.out.println("Prime number: ");
for(int a = 0; a < 256; a++){
boolean checkIt = checkPrime(a, 5); //check whether the number is prime or not
if(checkIt){
System.out.print(a + " ");
break;
}
}这样,一旦你的循环找到了它的第一个质数,它就会中止计算。
编辑:要添加随机元素,您必须选择随机检查的数字或选择随机停止的位置。一个例子可能是:
System.out.println("Prime number: ");
Ramdom rand = new Random();
for(int a = 0; a < 256; a++){
int check = random.nextInt();
boolean checkIt = checkPrime(check, 5); //check whether the number is prime or not
if(checkIt){
System.out.print(check + " ");
break;
}
}这将检查多达256个随机数。如果你想确保你能找到一个,我建议这样做:
System.out.println("Prime number: ");
Ramdom rand = new Random();
int prime;
do {
prime = rand.nextInt();
} while(!checkPrime(prime, 5));
System.out.print(prime + " ");发布于 2014-04-16 17:45:20
例如,您可以将每个质数放入一个表中,然后从该表中随机抽取一个元素。
Random generator = new Random();
List<Integer> primes = new ArrayList<Integer>();
System.out.println("Prime number: ");
for(int a = 0; a < 256; a++){
if(checkPrime(a, 5)){
primes.add(a);
}
}
System.out.print(primes.get(generator.nextInt(primes.size()))); 小心点,我没有测试它;)
发布于 2014-04-16 17:48:07
您可以执行以下操作:
将所有质数存储在arraylist中,然后对其进行混洗或获取随机索引。
ArrayList<Integer> lista = new ArrayList<Integer>();
for(int a = 0; a < 256; a++){
boolean checkIt = checkPrime(a, 5); //check whether the number is prime or not
if(checkIt){
lista.add(a);
}
}
Collections.shuffle(lista);
System.out.println(lista.get(0));
// or
Random r = new Random();
int index = r.nextInt(lista.size());
Integer RandPrimeNum = lista.get(index);
System.out.println(""+RandPrimeNum);https://stackoverflow.com/questions/23105604
复制相似问题