JavaLeetCode204。素数を数える

非負の整数n未満のすべての素数の数を数えます。
例1:
入力:n = 10
出力:4
説明:10未満の素数が4つあり、それらは2、3、5、7です。
例2:
入力:n = 0
出力:0
例3:
入力:n = 1
出力:0

素数は、素数とも呼ばれ、1とその数自体を除いて、他の自然数で割り切れない1より大きい自然数の数を指します。---ウィキペディア

ここでは、2から始まり、sqrt(n)までトラバースするフィルタリング方法が使用されます。これは、後続の操作が繰り返し操作であるためです。

要素iの位置がtrueの場合(falseは、素数ではなく削除されたことを意味します)、その位置にある要素iが素数であり、各削除がi 2から始まることを意味します前の番号のため) i 2が削除されました)、すべてのi位置を削除します

最後に、真の数を数えます
ここに画像の説明を挿入

class Solution {
    
    
    public int countPrimes(int n) {
    
    
        if(n<2){
    
    
            return 0;
        }
        int sum=0;
        boolean[] b = new boolean[n];
        Arrays.fill(b,true);
        for(int i=2;i*i<n;i++){
    
    
            if(b[i]){
    
    
                for(int j=i*i;j<n;j+=i){
    
    
                    b[j]=false;
                }
            }
        }

        for(int i=2;i<n;i++){
    
    
            if(b[i]){
    
    
                sum++;
            }
        }
        return sum;
    }
}

おすすめ

転載: blog.csdn.net/sakura_wmh/article/details/110542482