首页  >  文章  >  后端开发  >  如何在Python中正确打印素数系列?

如何在Python中正确打印素数系列?

Linda Hamilton
Linda Hamilton原创
2024-10-21 13:16:02522浏览

How to Correctly Print Prime Number Series in Python?

在 Python 中打印素数系列

要打印指定范围内的一系列素数,常见的方法是迭代范围并检查每个数字是否是质数。但是,所提供的代码试图实现此目的,但输出一系列奇数而不是素数。让我们检查这个问题并找到最佳解决方案。

提供的代码迭代范围 (1, 101),并针对每个数字检查该数字本身的整除性。这就是错误所在。素数只能被 1 和它本身整除,所以你只需要检查从 2 到数字本身的数字。

更正后的代码应该如下:

<code class="python">for num in range(2, 101):
    prime = True
    for i in range(2, num):
        if (num % i == 0):
            prime = False
    if prime:
        print(num)</code>

这个修改后的代码为每个数字将布尔标志 prime 初始化为 True,并检查数字直至数字本身,确保正确的素数识别。

或者,更简洁和 Python 的方法是:

<code class="python">for num in range(2, 101):
    if all(num % i != 0 for i in range(2, num)):
        print(num)</code>

此代码使用 all() 函数中的生成器表达式来确定该数字是否可以被从 2 到其自身(不包括其自身)的任何数字整除。如果不存在这样的因数,则该数字将打印为素数。

为了提高效率,您只能检查不超过该数字的平方根的除数。这是因为如果一个数有较大的因数,它也一定有一个较小的对应因数。下面的代码结合了这种优化:

<code class="python">import math
for num in range(2, 101):
    if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)):
        print(num)</code>

最后,为了进一步提高效率,您可以跳过检查偶数,因为大于 2 的素数总是奇数。以下代码反映了这种优化:

<code class="python">import math
print(2)
for num in range(3, 101, 2):
    if all(num % i != 0 for i in range(3, int(math.sqrt(num)) + 1, 2)):
        print(num)</code>

以上是如何在Python中正确打印素数系列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn