Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 素数的增量计数_Python_Python 3.x - Fatal编程技术网

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性能冲击,这就足够了。