1. 程式人生 > >python 判斷素數以及高效求n以內素數

python 判斷素數以及高效求n以內素數

1、判斷是否是素數

def isPrime(n):
    if n <==1:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    return True

2、求n以內的素數

 class Solution:
    def countPrimes(self, n):
        """
        初始所有一個n維陣列 res 表示數都為素數。
        從3開始將3的奇數倍標記成False,即不是素數。
        之後對每一個素數此行上一步操作
        這裡我們不用管偶數倍,因為我們最後判定時預設所有偶數不是素數
        """
if n < 3:return 0 res = [True] * n for i in range(3, int(n**0.5)+1, 2): res[i*i::2*i] = [False] * ((n-i*i-1)//(2*i)+1) return [2] + [i for i in range(3,n,2) if res[i]]