代码之家  ›  专栏  ›  技术社区  ›  noogler

java中用数组中的素数填充数组的方法

  •  0
  • noogler  · 技术社区  · 8 年前

    编写一个方法,当给定一个整数值时,该方法检查该值是否为素数。 使用前面的答案,编写用前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将递增,但我们不会再次检查其素数。非常感谢您的帮助。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Elliott Frisch    8 年前

    您需要一个变量来保持您在输出数组中的位置,另一个变量在循环中递增以测试素性。而且,我会退回 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 和a limit 喜欢

    public static int[] fillArray(int count) {
        return IntStream.range(1, Integer.MAX_VALUE)
                .filter(x -> checkPrime(x))
                .limit(count).toArray();
    }
    
        2
  •  -2
  •   Sideeg MoHammed    8 年前

    就像这样做,直到循环找到一个prine数并将其添加到数组中,i才会递增

    public static void fillArray(){
    int[] arr = new arr[20];
    int n -1;
    for ( int i = 0; i < 20; ){
    if (checkPrime(n) == True){
    arr[i] = n;
    n++;
    i++;
    }else {
    n++}
    }