快速判断一个数是否为质数

来源:互联网 发布:淘宝价格区间设置不了 编辑:程序博客网 时间:2024/05/17 06:23

质数(素数): 在大于1的自然数中,除了1和它本身以外不再有其他因数的数。
合数: 自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数,与质数相对。

如何判断一个数是否为质数

方法一:

  • 从 2~(n-1)进行遍历,判断能不能整除,从而判断是不是质数。该方法在数据量比较大的时候,效率比较低。

方法二:(2步)

  • 判断能否被2整除,如果能,说明这个数不是质数。如果不能,说明这个数也不能被(2,4,6,…2*i)整除,所以下一步只需要对3~(n-1)之间的奇数进行判断即可。
  • 只需要遍历 3~Math.sqrt(value)这个范围的数即可。原因分析如下:任何一个合数都可以分解为几个质数的乘积;所以肯定会有质因数<=Math.sqrt(value);所以只需遍历3~Math.sqrt(value)这个范围的数,有能整除的则不是质数,没有则是质数。

代码如下 IsPrime(int val)函数所示:

    //快速判断一个数是不是质数:(总共2步)    //1、判断能否被2整除    //2、遍历 3~Math.sqrt(value)这个范围    public static boolean IsPrime(int val){        boolean flag = true;        if((val & 1) == 0){            flag = false;            return flag;        }        for(int i=3; i<= Math.sqrt(val); i+=2){            if(val%i == 0){                flag = false;                break;            }        }        return flag;    }

参 考

http://blog.csdn.net/chaoojie/article/details/7710988

0 0