所以我已经开始学习python(python3),我得到了这个打印质数的程序,这是我的代码::
a=int(input("Enter starting number"))
b=int(input("Enter the ending number"))
while(a!=b):
for n in range(2, a-1):
c=a%n
if(c!=0):
print(a)
elif(c==0):
break
a+=1我确实意识到找出质数的代码是错误的,因为它会打印一些数字,比如9,15,21...which不是质数,但先听我说完。
我运行了程序,并将值保留为a=4 b=7
我期望输出是:5 5 5 7 7 7
我得到的答案是:55
我不能理解这个输出背后的原因。
我能得到输出的解释吗?
发布于 2019-10-02 03:19:23
第一个问题是,在循环中,range(2,a-1)不包括最后一个值。如果您将其更改为range(2,a),则包含您想要的最后一个值,但它不包含a的值。这将打印5 5 5。要使7显示出来,请查看While循环的逻辑。循环说,虽然a不等于b,但要做循环中的事情。因此,一旦a= b,循环将不再运行。您希望循环运行到它等于b,运行最后一次,然后退出。因此,您需要将其更改为,while a != b+1。这将得到您期望的输出。下面是更改后的代码。
a=int(input("Enter starting number"))
b=int(input("Enter the ending number"))
while(a!=b+1):
for n in range(2, a):
c=a%n
if(c!=0):
print(a)
elif(c==0):
break
a+=1https://stackoverflow.com/questions/58189098
复制相似问题