欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

统计n之内的素数个数

程序员文章站 2024-03-14 20:46:41
...

当n=100,输出25,说明100以内有25个素数

方法一:暴力解法

  public static int count(int n){
        int count=0;
        for(int i=2;i<n;i++){
            count+=isPrime(i)?1:0;;
        }
        return count;
    }

    public static boolean isPrime(int n){
        for(int i=2;i<=Math.sqrt(n);i++){//注意是小于等于 
            if(n%i==0){
                return false;
            }
        }
        return true;
    }

方法二:埃氏筛选法

  public static int  countPrimes(int n){
        //埃氏筛选
        int count=0;
        boolean b[]=new boolean[n];//初始化默认为flase  这里定义false为素数  true为合数(非素数)后面遍历的话遇到合数就可以直接跳过了
        for(int i=2;i<n;i++){
            if(!b[i]){
                count++;
                for(int j=i*i;j<n;j+=i){
                    //j=i*i是从j=2*i优化而来的,系数2会随着遍历递增(j+=i),
                    b[j]=true;
                }
            }
        }
        return count;
    }