2012-07-06 47 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: