😸

素数を求めるアルゴリズムをPythonで書いてみた

2023/03/19に公開約900字

この関数は、startとendの2つの引数を受け取り、startからendまでの素数を出力します。
startの引数は省略可能で、省略された場合は自動的に2が設定されます。

def print_primes(end, start=2):
    """
    startからendまでの素数を出力する関数。
    """
    # 素数を探す範囲を指定する
    for number in range(start, end + 1):
        # numberが素数であるかどうかを判定する
        is_prime = is_prime_number(number)
        # numberが素数であれば出力する
        if is_prime:
            print(number, end=",")

def is_prime_number(number):
    """
    引数で渡されたnumberが素数であるかどうかを判定する関数。
    """
    # numberが2以下の場合、numberは素数ではないため、Falseを返す
    if number < 2:
        return False
    # numberを2で割った商をhalfとする
    half = number // 2
    # 2からhalfまでの数値についてforループで処理する
    for divisor in range(2, half + 1):
        # もしnumberをdivisorで割った余りが0であれば、numberは素数ではないため、Falseを返す
        if number % divisor == 0:
            return False
    # 2からhalfまでのどのdivisorでもnumberを割り切ることができなかった場合、numberは素数であるため、Trueを返す
    return True

ポイントはhalfを設定し、無駄な計算量を減らしているところです。

Discussion

ログインするとコメントできます