python-3.x 预冲计数器程序调试

b1zrtrql  于 2023-01-10  发布在  Python
关注(0)|答案(1)|浏览(125)

我在写一个程序计算给定区间内质数的个数
我想到了这个:

def check_primes(numb):
    if numb == 2 :
        return True
    n = 2
    while n < numb:
        if numb % n != 0:
            return True
        else:
            return False

def count_primes(num) :
    count = 0
    for m in range(2,num) :
        if check_primes(m) == True :
            count += 1

    return count

但是当我尝试count_primes(100)时,我得到50而不是25,不知什么原因,有人能给我解释一下这里面出了什么问题吗?

6ojccjat

6ojccjat1#

在你的while中,你没有增加n,你的方法只运行n=2,仅此而已。
因此,只需将n += 1添加到while即可:

def check_primes(numb):
    if numb == 2 :
        return True
    n = 2
    while n < (numb // 2) + 1:
        if numb % n != 0:
            n += 1
        else:
            return False
    return True

还要注意的是,不需要检查所有的数字到numb。你可以检查它直到numb/2,这就足够了。

相关问题