我正在制作一个快速程序,该程序将要求用户输入一个数字,然后输出直至该数字的所有质数:
n=int(input("Enter a number: "))
a=2
if n<=1:
n=int(input("Enter another number: "))
while a<n:
for i in range(2,n):
if a%i==0:
break
else:
print (a)
break
a=a+1
我遇到的问题是它不会打印出来2
。例如,如果我将其20
用作我的n
值,它将显示:
Enter a number: 20
3
5
7
9
11
13
15
17
19
您有两个错误:
的else
缩进不正确,因此它位于而if
不是for
(print
如果下面的所有值a
都不是的因数a
,而不是第一个不是的因数,您要这样做);和
您的内在语言range
上升到n
,而不是a
(因此总是包括a
和a % a == 0
)。
这将起作用:
for a in range(2, n):
for i in range(2, a):
if a % i == 0:
break
else:
print(a)
请注意,我已经使用一个for
循环替换了external while
,当您已经知道在哪里停止时,通常会更好。您可以通过检查的平方根来提高代码效率a
,并2
忽略以外的偶数,但我会将这些优化留给您。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句