用java编写 产生20个1-1000之间的随机正整数,并判断其中素数的个数。 谢谢

如题所述

import java.util.Arrays;
import java.util.Random;

public class RandomPrime {

/**
* @param args
*/
public static void main(String[] args) {
int[] ranNums = new int[20];
Random ran = new Random();
for (int i = 0; i < ranNums.length; i++) {
int num = ran.nextInt(1000) + 1;// ran.nextInt(1000)产生的是0-999所以+1就是1-1000,如果是ran.nextInt(1001)产生的实际是0-1000
boolean flag = false;
for (int m = 0; m < i; m++) {// 还要判断生成的随机数是否与前面的有重复
if (ranNums[m] == num) {
flag = true;
break;
}
}
if (flag) // 如果重复了 循环变量i减去1再继续,即重新生成一遍
i--;
else
ranNums[i] = num;
}
System.out.println("随机生成的随机数是:" + Arrays.toString(ranNums));

int count = 0;
String out = "";
for (int num : ranNums) {
if (isPrime(num)) {
out += num + " ";
count++;
}
}
if (count > 0)
System.out.println("一共有" + out + count + "个素数");
else
System.out.println("没有素数");
}

/**
* 判断是否是素数的方法
*
* @param num
* @return
*/
public static boolean isPrime(int num) {
boolean pri = true;
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
pri = false;
break;
}
}
return pri;

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-30
说一下思路把:
你写一个判断输入的数字是否为素数的函数。返回值设为boolean
再写一个循环从1到该整数n
执行你上面写好的函数
如果返回值是true
就把这个数字
打印出来
第2个回答  2010-12-20
public class Test {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 20; i++) {//循环20次
int num = random.nextInt(1001);//生成随机数
if (isPrime(num)) {//判断 是否质数
System.out.println(num + "是质数");
} else {
System.out.println(num + "不是质数");
}
}
}
/**
* 判断质数方法
* @param num
* @return
*/
public static boolean isPrime(int num) {
boolean prime = true;
int limit = (int) Math.sqrt(num);
for (int i = 2; i <= limit; i++) {
if (num % i == 0) {
prime = false;
break;
}
}
return prime;
}
}本回答被提问者和网友采纳
第3个回答  2010-12-20
一楼的很好
相似回答