[LeetCode] 204. Count Primes

885 ワード

Description:
Count the number of prime numbers less than a non-negative number, n
Solution 1:
create a dict to store the number of prime less than n.
Time Complexity: O(n*n)
class Solution:
    # @param {integer} n
    # @return {integer}
    def countPrimes(self, n):
        result_dict = {0: 0, 1: 1, 2: 2}
        for key in range(3, n+1):
            if self.isPrime(key):
                result_dict[key] = result_dict[key-1] + 1
            else:
                result_dict[key] = result_dict[key-1]
        return result_dict[n]


    def isPrime(self, n):
        if n == 0:
            return False
        if n == 1 or n == 2:
            return True
        for divide in range(2, n):
            if n % divide == 0:
                return False
        return True

Got 
Time Limit Exceeded from OJ. Fail!