Python LeetCode(204.計數質數)

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

示例:

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

Solution:(直接遍歷尋找質數的話時間複雜度太高,超出時間限制。可以建立一個大小爲n的布爾類型的list,從0開始,設置0,1爲False[即非素數],2置爲True,且將小於n的2的倍數均置爲FALSE,之後同理,最終True的個數即爲素數的個數。)

1.gif

class Solution(object):
    def countPrimes(self, n):
        """
        :type n: int
        :rtype: int
        """
        if n <= 1:
            return 0
        
        nums = [None] * n
        nums[0],  nums[1] = False, False
        for i in range(n):
            if nums[i] == None:
                nums[i] = True
                for j in range(i+i, n, i):
                    nums[j] = False
        return sum(nums)

solution = Solution()

print(solution.countPrimes(20))

打印結果爲:8

發佈了117 篇原創文章 · 獲贊 415 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章