Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで指定した範囲内の素数を出力するプログラムの書き方

本記事では、指定された区間内のすべての素数を出力するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。

問題文

開始値と終了値からなる区間が与えられます。この区間に含まれるすべての素数を出力することが課題です。

なお、素数とは、1より大きい自然数のうち、1とその数自身以外に正の約数を持たない数のことを指します。

解法のアプローチ

この問題は、2つのforループを組み合わせて解決できます。

  • 1つ目のループ: 区間内の各数値を順番に取り出します。
  • 2つ目のループ: 取り出した数値が素数かどうかを判定します。

具体的には、ある数値が2からその数値自身の手前までのいずれかの数で割り切れる場合、その数は素数ではありません。逆に、どこでも割り切れなければ素数として出力します。

実装例

start = 10
end = 29
for val in range(start, end + 1):
    # 数値が他の数で割り切れる場合は素数ではない
    if val > 1:
        for n in range(2, val):
            if (val % n) == 0:
                break
        else:
            print(val)

出力結果

11
13
17
19
23
29

このコードを実行すると、10から29までの範囲に含まれる素数である11、13、17、19、23、29が出力されます。

ポイント:for-else構文

このコードで注目すべきは、Python特有の「for-else」構文です。elseブロックは、forループがbreakされずに最後まで完了した場合にのみ実行されます。つまり、「2からval-1までのどの数でも割り切れなかった(=素数である)」場合にだけprint(val)が実行される仕組みです。

まとめ

本記事では、forループとfor-else構文を組み合わせて、指定された区間内の素数を出力する方法を学びました。シンプルながらPythonらしい書き方を含む基本的なアルゴリズムなので、ぜひ実際にコードを動かして挙動を確認してみてください。

  1. 指定した範囲内のすべての素数を出力するPythonプログラム

    この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 ある区間が与えられたとき、その範囲内に含まれるすべての素数を求めて出力する必要があります。 ここでは、素数の基本的な定義に基づいた全探索(ブルートフォース)によるアプローチを紹介します。素数とは、「1とその数自身のみを約数として持ち、それ以外の数を約数に持たない自然数」のことです。 この定義に基づき、各数値が素数の条件を満たしているかどうかを判定し、条件が真(True)と評価されるたびに出力処理を行います。 それでは、実際の実装例を見ていきましょう。 実装例 start = 1 end = 37 for val in

  2. 指定された文字列のすべての順列を出力するPythonプログラム

    本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +