编写一个方法,当给定整数值时,检查该值是否为素数。 使用您之前的答案,编写用前20个素数填充数组的代码。
我已经解决了第一部分,并且有一个名为checkPrime(int n)的方法,它返回true或false。我在第二部分感到困惑,我应该使用哪些循环,我试图做这样的事情但是卡住了:
public static void fillArray() {
int[] arr = new arr[20];
n = 1;
for (int i = 0; i < 20; i++) {
if (checkPrime(n) == True) {
arr[i] = n;
n++;
} else {
n++;
}
}
这里,如果数字不是素数n正在增加,但我们不会再检查它是否为素数。任何帮助表示赞赏。
答案 0 :(得分:1)
你需要一个变量来保持你的输出数组中的位置,另一个变量在你的循环中递增以测试素数。而且,我会返回我建造的int[]
。并将所需元素的数量传递给函数。当它是素数时,将它添加到数组中。循环直到数组索引等于数组长度。它是int[]
(不是arr[]
)。像,
public static int[] fillArray(int count) {
int[] arr = new int[count];
int n = 0;
for (int i = 1; n < arr.length; i++) {
if (checkPrime(i)) {
arr[n] = i;
n++;
}
}
return arr;
}
或,如果您使用的是Java 8+,则可以IntStream
使用filter
和limit
。像,
public static int[] fillArray(int count) {
return IntStream.range(1, Integer.MAX_VALUE)
.filter(x -> checkPrime(x))
.limit(count).toArray();
}
答案 1 :(得分:-2)
就这样做,我不会增加,直到循环找到一个prine数字并将其添加到数组
Sheet3