大范围内判断一个数是否为质数

看别人的时候没看懂,自己写的时候想了想就明白了,也添上注释发出来。

注释纯粹个人理解。

 

   /**4.大范围内判断一个数是否为质数
     * Prime number
     *  设置一个开关,1~sqrt(n)之间的非质数设为关状态
     *  最后还是用mod 1~sqrt(n 之间的质数判断。
     *  条件 n为整数,可能对小的数有问题

     *  @author gdcic-zhang
     */
    public boolean isPrime2(int n){
        boolean result=true;
        int end=(int) Math.sqrt(n);
        BitSet b=new BitSet(end);//开关
        int i;
        for(i=2;i<end;i++){
            b.set(i);//所有为处于打开状态,
        }
        i=2;
        while(i*i<end){
            if(b.get(i)){
                for(int k=i;k<b.size();k+=i){
                    b.clear(i);
                }
            }
            i++;
        }
        for(i=2;i<end;i++){
             if(b.get(i)){
                  if(n%i==0){
                    result=false;
                    break;
                }
             }
        }
        return result;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值