`
lolocomee
  • 浏览: 15978 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 
阅读更多

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

注释纯粹个人理解。

 

   /**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;
    }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics