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

质数(素数): 在大于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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值