Python 素数的增量计数
我有以下代码:Python 素数的增量计数,python,python-3.x,Python,Python 3.x,我有以下代码: 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") brea
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不是素数
为什么计数会导致此问题?问题在于您计算数字是否为素数的方式,如果if和else语句正确,只需按如下方式更改范围: 计数=0 尽管如此: 编号=输入编号: 如果数字>1: 对于范围2中的i,编号: 如果编号%i==0: printnumber,不是质数 打破 其他: printnumber,是一个素数 计数=计数+1 其他: printnumber,不是质数 PrintCounted素数总数:{0}.formatcount 当数字为4时,range2、intnumber/2等于range2、2,并且不执行循环,代码继续执行其他操作。正确的代码是:
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添加到intnumber/2,因为如果该数字为4,循环将从i=2开始执行,直到i出现缩进问题;对齐else:printnumber的缩进,它是一个素数块,应该按您的方式运行intend@THK不,这是循环终止else,不是if else。顺便说一句,除以2是一个很好的优化,但实际上您只需要测试小于等于sqrtnumber的因子,这将为您提供一个渐进的速度提升。当a+1补偿范围内的结束参数为独占时,此更改将提供不必要的2x性能冲击,这就足够了。