【发布时间】:2020-11-19 09:18:24
【问题描述】:
我有一个学校练习,我必须制作一个质数生成器并稍后对其进行优化。 在我做了一些优化之后,我的生成器也开始打印数字“4”,这显然不是质数。
我的代码如下所示:
import time
#Primzahlen errechnen
c = 0
print("Enter Upper Value:")
Max_wert = input()
x = int(Max_wert)
print("Prime Numbers between 0 and ", x, "are:")
time.sleep(1) # Pause für 2 Sekunden
for num in range(2, x):
num2 = int(num / 2)
for i in range(2, num2):
if (num % i) <= 0:
break
else:
print(num)
c+=1
print(c, "Prime Numbers were found")
当我删除行:> num2 = int(num / 2) 并将 for 循环中的 num2 更改回 num 时,一切正常。
【问题讨论】:
-
如果您的
num为 4,则您的range(2, num2)为空,因此找不到因子。使用更大的范围。 -
thx,我找到了防止“num”永远为 4 的解决方案。我将第一个 for 循环编辑为:“range(1, x+1, 2)” 所以它跳过每个偶数(显然包括 4)。
-
您可以使用
num2 = num//2 + 1作为您的上限(尽管通常会涉及平方根)。 -
这两种解决方案都适用,但问题是 2 现在也被跳过了,iirc 2 也是一个素数
标签: python for-loop generator primes