我有以下代码:
count = 0
while True:
number = int(input("Enter The Number: "))
if number > 1:
for i in range(2,int(number/2)):
if (number % i == 0):
print(number, "is not a Prime Number")
break
else:
print(number,"is a Prime number")
count = count + 1
else:
print(number,"is not a Prime number")
print("Total number of prime number counted : {0}".format(count))当用户输入一个数字时,它将检查该数字是否为质数。如果是,它将增加计数。这段代码有一个问题,如果我键入4,它会将计数增加1.4。4不是质数。
我一直试图弄清楚为什么会发生这种情况,但我做不到。如果我从代码中完全删除计数,它就能够检查4不是质数。
为什么count会导致这个问题?
发布于 2020-01-12 00:50:29
当number为4时,range(2,int(number/2))等于range(2, 2),不会执行任何循环,代码将继续执行else。
发布于 2020-01-12 01:10:14
正确的代码是:
count = 0
while True:
number = int(input("Enter The Number: "))
if number > 1:
for i in range(2,int(number/2)+1):
if (number % i == 0):
print(number, "is not a Prime Number")
break
else:
print(number,"is a Prime number")
count = count + 1
else:
print(number,"is not a Prime number")
print("Total number of prime number counted : {0}".format(count))您必须将+1添加到int(数字/2),因为如果数字是4,则循环将从i=2执行到i<2,因此,循环不会开始。如果循环没有开始,或者如果循环被中断( break),则执行else块(Documentation)。总而言之,当数字为4时,将执行else块。
发布于 2020-01-12 00:49:56
问题出在您计算数字是否为质数的方式上,if和else语句是正确的,只需像这样更改range:
count = 0
while True:
number = int(input("Enter The Number: "))
if number > 1:
for i in range(2, number):
if (number % i == 0):
print(number, "is not a Prime Number")
break
else:
print(number,"is a Prime number")
count = count + 1
else:
print(number,"is not a Prime number")
print("Total number of prime number counted : {0}".format(count))https://stackoverflow.com/questions/59696399
复制相似问题