埃氏筛法求质数个数

class Solution {
    public int countPrimes(int n) {
        if(n<=1) return 0;
        int sum=0;
        int[] nums=new int[n];
        nums[0]=1;
        for(int i=2;i<=Math.sqrt(n);i++){
            for(int j=i*i;j<=n;j+=i){
                nums[j-1]=1;
            }
        }
        for(int i=0;i<n;i++){
            if(nums[i]==0){
                sum++;
            }
        }
        if(nums[n-1]==0) sum--;//不包括终点
        return sum;
    }
}
发布了4 篇原创文章 · 获赞 0 · 访问量 20

猜你喜欢

转载自blog.csdn.net/qq_43720965/article/details/104610449