😸
素数を求めるアルゴリズムをPythonで書いてみた
この関数は、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