要在范围程序中打印素数:
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
答案 0 :(得分:1)
你有缩进差异:
for j in range(2,i):
if (i%j) == 0:
break
## This piece
else:
print(i)
## This piece
在你的第一个例子中:
恩你的第二个例子:
else
更频繁。答案 1 :(得分:0)
2维循环是这个代码的错误,当i = 5时,你去j(2,5)所以你经历了三次循环,你应该添加一个命令来防止重复
答案 2 :(得分:0)
您;在每次检查成功后重新打印该值。在所有检查之后,你应该放一个标志来打印出来。像下面的东西
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)