①需求:實現一個函數,對於給定的整型參數 N,該函數可以把天然數中,小於 N 的質數,從小到大打印出來。
好比,當 N = 10,則打印出2 3 5 7
(1)試除法:函數
def is_prime(Num): if Num <= 1: return False if Num == 2: return True if Num%2 == 0: return False i = 3 while i <= Num/2: if Num%i == 0: return False else: i += 2 return True if __name__ == '__main__': b = 10 primes = [i for i in range(2,b) if is_prime(i)] print primes
解釋一下:除了2之外,全部可能的質因數都是奇數。因此,他們就先嚐試 2,而後再嘗試從 3 開始一直到 x/2 的全部奇數。spa
(2)試除法:blog
def is_prime(Num): i = 2 if Num <= 1: return False if Num == 2: return True while i*i <= Num: if Num % i == 0: return False else: i += 1 return True if __name__ == '__main__': b = 10 primes = [i for i in range(2,b) if is_prime(i)] print primes
解釋一下:其實只要從 2 一直嘗試到√x,就能夠了。因數都是成對出現的。好比,100的因數有:1和100,2和50,4和25,5和20,10和10。看出來沒有?class
成對的因數,其中一個必然小於等於100的開平方,另外一個大於等於100的開平方。im