要在范围程序中打印质数:
lower = int(input("Enter lower range: "))
upper = int(input("Enter upper range: "))
for num in range(lower,upper + 1):
# prime numbers are greater than 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)
上述内容的输出为:
Enter lower range: 3
Enter upper range: 10
3
5
7
但是,当我尝试使用以下代码时,输出是不同的。
min=int(input("enter the min num"))
max=int(input("Enter the max num"))
for i in range(min,max+1):
if i > 1:
for j in range(2,i):
if (i%j) == 0:
break
else:
print(i)
输出:
enter the min num: 3
Enter the max num: 10
3
5
5
5
7
7
7
7
7
9
您有一个缩进差异:
for j in range(2,i):
if (i%j) == 0:
break
## This piece
else:
print(i)
## This piece
在您的第一个示例中:
- 对于每个数字,进行模计算,如果导致 0 则中断
- 如果所有计算都没有导致 0,则找到一个素数(并因此打印它)
en 你的第二个例子:
- 对于每个数字,进行模计算,如果导致 0 则中断
- 如果它不会导致 0:打印数字。这种情况比示例 1 中的
else
发生的频率更高。
2 维循环是这段代码的问题,当 i = 5 时,你去 j (2,5) 所以你遍了循环三次,你应该添加一个命令以防止重复
每次
检查成功后重新打印值。您应该在所有检查后放入一个标志以将其打印出来。如下所示
for i in range(min,max+1):
if i > 1:
prime = True
for j in range(2,i):
if (i%j) == 0:
prime = False
break
if prime:
print(i)