【发布时间】:2018-11-20 19:22:11
【问题描述】:
lower = int(input("from:"))
upper = int(input("to:"))
for num in range(lower,upper + 1):
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)
为什么这段代码将“2”打印为质数? (它是,但它不应该打印它)
2%2==0 所以应该跳过它...
【问题讨论】:
-
i为 3 时会发生什么? -
for i in range(2,num)如果 num 是 2 那是 empy 列表,所以你不会得到 2%2==0 -
嗯.... 2 是质数。它只能由它自己和一个来划分。但是,我确实在您的代码中看到了导致意外响应的错误:
range(start,end)需要end大于start。 Python 的鸭子类型意味着不会执行检查,并且您的 if 语句不会被检查。我希望python没有那样做,但不幸的是它做到了。
标签: python python-3.x algorithm primes