首页 > 解决方案 > 计算多项式的素数结果

问题描述

有人可以帮助我并告诉我为什么这不起作用吗?目标是计算给定多项式对指定范围 [a,b] 内的输入 n 产生的素数的数量:

    def count_primes(poly, a, b):
    primes = 0
    if b >= a:
        for n in range(a, b):
            result = poly(n)
            if result > 1:
                for i in range(2, result):
                    if (result % i) == 0:
                        break
                    else:
                        primes += 1
            else:
                break
    return primes


def poly(n):
    return n**2 + n + 41


print(count_primes(poly, 0, 39))

在这种情况下,结果应该返回 40。

[2] 问题解决步骤 1。输入要检查的数字并将其存储在变量中。第2步。将计数变量初始化为 0。 步骤 3。让 for 循环范围从 2 到数字的一半(不包括 1 和数字本身)。第4步。然后使用 if 语句找到除数的数量,并每次递增 count 变量。步骤 5。如果除数的个数小于或等于 0,则该数是素数。步骤 6。打印最终结果。步骤 7。出口。

标签: pythonprimespolynomials

解决方案


这是计算素数的错误方法:

        if result > 1:
            for i in range(2, result):
                if (result % i) == 0:
                    break
                else:
                    primes += 1

应该:

        if result > 1:
            isPrime = True
            for i in range(2, result):
                if (result % i) == 0:
                    isPrime = False
                    break
            if isPrime:
                primes += 1

此外,它不言而喻。素数检测的简单优化。你只需要用 2 和 3 到 sqrt(result) 之间的所有奇数来测试整除性。


推荐阅读