python中的素数,编程不工作

时间:2013-01-02 12:47:18

标签: python python-2.7

运行后,它不会打印任何内容:

for n in range(2,100):
     for x in range(2,n):
        if n%x == 0:
         break
        else:
          if n==x:
           print n,'is a prime number'

2 个答案:

答案 0 :(得分:4)

if n==x永远不会成立,因为内部循环仅针对从x2的{​​{1}}值运行。

如果您需要检查内部循环是否已完成,请在n-1之后使用else。如果尚未执行for,则会执行else

break

更加Pythonic的方法是将for n in range(2,100): for x in range(2,n): if n%x == 0: break else: print n,'is a prime number' 与生成器表达式一起使用:

all

答案 1 :(得分:1)

简单的逻辑决定了这一点 - 剩余部分为0的任何东西都会脱离循环,任何模数值本身都是0,所以你的else块永远不会到达包含的if {1}}将会运行。