如何在Python中正確列印素數系列?

Linda Hamilton
發布: 2024-10-21 13:16:02
原創
522 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!