2012-07-06 53 views
1

對不起,如果這是顯而易見的,但我對python編程很陌生,爲什麼這個程序不生成素數列表,其中大多數似乎是素數,但有有些不是。python素數生成器的問題

#!/usr/bin/env python 
print ("Prime Numbers") 
Number = 2 
while True: 
    Test = 2 
    while Test < Number: 
     if Number % Test == 0: 
      Number = Number + 1 
     else: 
      Test = Test + 1 
    print (str(Number) + " is a prime number!") 
    Number = Number + 1 
+4

如果按照[PEP 8](http://www.python.org/dev/peps/pep-0008/#方法名稱和實例變量)與你的變量命名約定,人們會發現它更容易理解你的代碼。我覺得'Test'和'Number'應該是類,而不是實例變量。 – robert 2012-07-06 11:39:33

+0

嘗試構造一個更多的程序,做一個函數,每次調用返回一個素數(在需要的地方添加yield/return語句) – KurzedMetal 2012-07-06 11:39:57

+0

小提示 - 1]短語'a = a + 1'可以重寫爲'a + = 1',除了更清潔外,也可能更快。 2]在通過強力分割檢查對素數進行測試時,您只需檢查數字「 Hooked 2012-07-06 13:14:43

回答

4

這個模板可以幫助你找到素數:

if Number % Test == 0: 
     Number = Number + 1 
     Test = 2 # you'll need to reset Test here 
    else: