动态创建一个长度为100的整型数组,随机产生100个整型数据(0-100),分别赋值给数组各元素,输出其中所有的素数(去掉重复元素)。
主要问一下怎么才能去掉重复元素
动态创建一个长度为100的整型数组,随机产生100个整型数据(0-100),分别赋值给数组各元素,输出其中所有的素数(去掉重复元素)。
主要问一下怎么才能去掉重复元素
public class Test {
public static void main(String[] args) {
Random random = new Random();
List<Integer> collect = Stream.generate(() -> random.nextInt(100))
.limit(100)
.filter(Test::isPrime)
.distinct()
.collect(Collectors.toList());
for (Integer num : collect) {
System.out.println(num);
}
}
static boolean isPrime(Integer num) {
if (num <= 3) {
return num > 1;
}
// 不在6的倍数两侧的一定不是质数
if (num % 6 != 1 && num % 6 != 5) {
return false;
}
int sqrt = (int) Math.sqrt(num);
for (int i = 5; i <= sqrt; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
return false;
}
}
return true;
}
}