我现在想到的是通过下面的方法判断一个数是不是素数,那么还有更好的方法吗?
方法如下:
public static boolean IsPrimeNumber(int n) {
    if (0 == n % 2) {
        return false;
    }     for (int i = 3; i < (int)Math.sqrt(n); i += 2) {
        if (0 == n % i) {
            return false;
        }
    }     return true;
}

解决方案 »

  1.   

    if (0 == n % 2) {
        return false;
    }要加上n > 2否则2也变合数了
      

  2.   

     Rabin-Miller素数测试 在加上你这个应该可以了
      

  3.   

    不存在"最有效率"的判定方法.如果一个方法要求判定一个数字不是素数的情形下给出其一个因子,那肯定谈不上"有效率",如果不要求100%确定该数是素数,还是要求以概率P(P>99%)判定,效率可以进一步提高