【leetcode】204. Count Primes

Count the number of prime numbers less than a non-negative number, n.

Example:

Input: 10
Output: 4
Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.

題解1:利用素數檢測

class Solution {
    public int countPrimes(int n) {
        if(n == 0 || n == 1)
            return 0;
        int count = 0;
        for(int i = 2;i < n;i++) {
            if(isPrime(i))
                count++;
        }
        return count;
    }
    
    public boolean isPrime(int n) {
        for(int i = 2;i * i <= n;i++) {
            if(n % i == 0) {
                return false;
            }
        }
        return true;
    }
}

題解2:利用埃氏篩法

class Solution {
    public int countPrimes(int n) {
        if(n == 0 || n == 1)
            return 0;
        int count = 0;
        boolean[] isPrime = new boolean[n];
        for(int i = 2;i < n;i++) {
            isPrime[i] = true;
        }
        for(int i = 2;i < n;i++) {
            if(isPrime[i]) {
                count++;
                for(int j = 2 * i;j < n;j += i) {
                    isPrime[j] = false;
                }
            }
        }
        return count;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章