【发布时间】:2020-01-11 16:36:50
【问题描述】:
我有以下代码:
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 不是素数。
为什么 count 会导致这个问题?
【问题讨论】:
-
您有缩进问题;对齐
else: print(number, "is a Prime number")块的缩进,它应该按照你的意图运行 -
@THK 不,这是循环终止 else,而不是 if else。顺便说一句,除以 2 是一个很好的优化,但实际上你只需要测试包括 sqrt(number) 在内的因子,这会给你一个渐近加速
标签: python python-3.x