所以我正在创建此函数,该函数使用户输入大于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
为什么我的输出重复出现?任何建议将不胜感激,谢谢!
答案 0 :(得分:6)
您的问题在这里:
for i in range (2, number):
if (number % i) == 0:
break
else:
if (number % i) != 0:
print(number)
位于循环内 的else
表示,每次发现非因数时,您将打印数字 。例如,对于数字= 11,您将为11
的值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
答案 1 :(得分:0)
一个简单的解决方案(有更好的方法):
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()