素數

問題描述:

素數(質數)指的是不能被分解的數,除了1和它本身之外就沒有其他數能夠整除。
求100以內的所有素數。

我的代碼:

import math
def prime(n):
    count=0
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            count=1
    if count!=1:
        return True
    else:
        return False
a=[]
for j in range(2,100):
    if prime(j):
        a.append(j)
print a

結果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]


我的思路:

原理:在一般領域,對正整數n,如果用2到n的平方根之間的所有整數去除,均無法整除,則n爲質數。


大致流程是:先定義一個函數,判斷傳入的數是否爲素數,然後使用該函數遍歷100以內的數,將滿足的數添加進列表,最後再輸出;

其中,count是一個狀態檢查器,值爲1時表示不是素數,爲0時表示是素數;


示例代碼:

def isPrimeNumber(n, s):
    for k in s:
        if k * k > n: break
        if n % k == 0: return None
    return n
prime = []
for n in range(2, 100):
    res = isPrimeNumber(n, prime)
    if res: prime.append(res)
print prime


代碼分析:

示例代碼不是用一個數的2到n的平方根之間的所有整數去除,而是用所有的素數平方值小於該數之間的素數去除,所以,函數內,第一個if語句是判斷(都是素數)列表s內的數的平方值大小,只保留小於n的素數,第二個if語句是判斷n是否可以整除保留的素數,只有都無法整除時才說明n是一個素數並返回。

最後,遍歷2到100以內的數,將滿足函數的賦給res並添加進素數列表prime中,供下次使用;



題目出處:http://www.cheemoedu.com/exercise/19

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