增補部落格 第二十篇 python 篩法求素數

财神给你送元宝發表於2024-06-14

題目描述】使用者輸入整數n和m(1<n<m<1000),應用篩法求[n,m]範圍內的所有素數。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。
【輸入格式】在一行中輸入整數n和m,資料間以空格為間隔。
【輸出格式】按照一行5個的格式輸出[n,m]範圍內的所有素數,其中每個素數的顯示格式為:佔5位,右對齊。
【輸入樣例】50 100
【輸出樣例】 53 59 61 67 71
73 79 83 89 97

def get_prime_numbers(n, m):
    prime = [True] * (m + 1)
    prime[0] = prime[1] = False
    p = 2
    while p * p <= m:
        if prime[p]:
            for i in range(p * p, m + 1, p):
                prime[i] = False
        p += 1
    for i in range(n, m + 1):
        if prime[i]:
            print(i)

n = int(input("請輸入一個整數 n (>1):"))
m = int(input("請輸入一個比 n 大的整數 m (<1000):"))
if 1 < n < m < 1000:
    print(f"在區間 [{n},{m}] 內的素數有:")
    get_prime_numbers(n, m)
else:
    print("輸入錯誤,請重新輸入符合要求的整數 n 和 m。")

  

相關文章