1. 程式人生 > >leetcode-204. 計數質數

leetcode-204. 計數質數

題目

統計所有小於非負整數 n 的質數的數量。

示例:

輸入: 10
輸出: 4
解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。

思路

每一個數的倍數一定不是質數。

程式碼

class Solution {

    public int countPrimes(int n) {
        int[] num = new int[n];
        int count = 0;
        int flag = 0;
        
        //標記質數,是質數的標記為1
        for(int i=2; i*i<n; i++) //注意是i*i
        {
            if(num[i]==0) 
            {
                int j = 2;
                while(i*j<n)
                {
                    num[i*j] = 1;
                    j++;
                }
            }            
        }
        
        //統計質數的個數
        for(int i=2;i<n;i++)
        {
            if(num[i]==0)
            {
                count++;
            }
        }
       return count; 
    }
}