我試圖過濾從1到100的素數,這裏是代碼。然而,事實證明,輸出中有許多數字未被使用。素數的Python算法
def isnot_prime(x):
if x == 1:
return True
if x == 2:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return True
else:
return False
print filter(isnot_prime, range(1,101))
的輸出是[1,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40 ,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90 ,92,94,96,98,100]。
算法一定有問題。我該如何改進它?
謝謝。
缺少什麼?你能指望什麼?例如:15或21?順便說一句,用你需要的所有素數做一個查找表,並檢查它。它更簡單,更快速,大量的實現都在互聯網上。 – luk32