因此,我创建了一个函数,让用户输入大于2的数字。然后,代码应该打印所有素数,从2开始,以用户输入的数字结尾。
这是我的代码,它可以工作(耶!)
def enterNumber():
number = int(input("Enter a number greater than 2"))
lower = 2
upper = number
for number in range (lower, upper):
if number > 2:
for i in range (2, number):
if (number % i) == 0:
break
else:
if (number % i) != 0:
print(number)
enterNumber()但这是我的输出,如果用户输入18
"Enter a number greater than 2"
user puts "18"
output: 3
5
5
5
7
7
7
7
7
9
11
11
11
11
11
11
11
11
11
13
13
13
13
13
13
13
13
13
13
13
15
17
17
17
17
17
17
17
17
17
17
17
17
17
17
17为什么我的输出重复自己?如有任何建议,将不胜感激!
发布于 2020-10-01 19:13:23
你的问题是:
for i in range (2, number):
if (number % i) == 0:
break
else:
if (number % i) != 0:
print(number)循环中的else表示,每次找到非除数项时都要打印数字。例如,对于number = 11,您将为i值2-10打印i。
在循环完成之前,您不知道这个数字是否是素数。你的打印必须在循环之后,在正常的出口上。一个经常被遗忘的语言特性是循环可以有一个else来实现这个目的。
for i in range (2, number):
if (number % i) == 0:
break
else:
print(number)输出:
Enter a number greater than 218
3
5
7
11
13
17发布于 2020-10-01 19:18:32
一个简单的解决方案(有更好的方法):
def enterNumber():
number = int(input("Enter a number greater than 2"))
lower = 2
upper = number
for number in range(lower, upper):
prime = True
for i in range(2, number):
if (number % i) == 0:
prime = False
break
if prime:
print(number)
enterNumber()https://stackoverflow.com/questions/64161770
复制相似问题