【问题标题】:trouble creating a method that returns the number of prime integers in the array创建返回数组中素数的方法时遇到问题
【发布时间】:2015-02-06 22:29:11
【问题描述】:

我无法创建一个方法来找出数组中素数的数量,到目前为止我已经这样做了,但是当我运行它时,它不能正常工作,它会将 2 计为素数和其他数字。请问有什么建议吗?

    int[] newSet = {8, 4, 22, 82, 12, 32, 18, 400, 3, 33, 401, -1, 1, 3, 9};
    System.out.println(primeIntegers(newSet));

}

public static int primeIntegers(int[] numbers) {
    int count = 0;
    for (int i = 0; i < numbers.length; i++) {
        if (numbers[i] % 3 == 0) {
            count++;
        }

    }

    return count;

}

}

【问题讨论】:

  • 确定素数的计算方法是什么?
  • 原来我做了一个 if 语句,比如 if (numbers[i]%2!=0){...
  • 您不是在确定素数,而是在确定 number%3==0 是否。
  • 那么,你认为能被3整除的数是质数吗?
  • 嗯...我的意思是 2 是素数...

标签: java arrays methods integer


【解决方案1】:

if (numbers[i] % 3 == 0) 确定素数肯定是错误的。首先,您需要知道prime number 是什么(2 是质数)。

确定一个数是否为素数的最简单(不是最好)方法是:

//checks whether an int is prime or not.
boolean static  isPrime(int n) {
    for(int i=2;i<n;i++) {//here,change i<n into 2*i<n or  Math.sqrt(i)<n will be better
        if(n%i==0)
            return false;//can be dividable by not one or itself.
    }
    return true;
}

//use above method to count the prime number
public static int primeIntegers(int[] numbers) {
    int count = 0;
    for (int i = 0; i < numbers.length; i++) {
        if(isPrime(numbers[i]))
            count++;
        }
    }
    return count;
}

【讨论】:

  • 感谢您的贡献。我看到了我的错误!(:
  • @rojo,从错误中吸取教训,我们初学者总会有很多错误。快乐编码。 :)
  • 谢谢你的话!(:上帝保佑你!
【解决方案2】:

您正在验证的条件仅返回不能被 3 整除的数字,以便找到您需要至少检查所有小于其平方根的数字的素数。 即。

boolean chkPrime(int num)
{
    for(int i=2;i<(sqrt(num));i++)
        if(num % i==0)
            return false;
    return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-30
    • 2011-07-23
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多