Pythonで約数を求める方法にはいくつかあります。ここでは、while
文を使用した方法と、それを効率化する方法について説明します。
while文を使用した方法
まず、基本的なwhile
文を使用した方法から見ていきましょう。以下のコードは、指定した数値の約数を求め、それを大きい順に出力します。
n = 30
x = n
while n > 0:
if x % n == 0:
print(n)
n -= 1
このコードは、30の約数を大きい順に出力します。結果は30, 15, 10, 6, 5, 3, 2, 1
となります。
効率化した方法
次に、計算量を減らすための効率化した方法を見ていきましょう。以下のコードは、約数を高速で列挙する方法です。
def make_divisors(n):
lower_divisors, upper_divisors = [], []
i = 1
while i*i <= n:
if n % i == 0:
lower_divisors.append(i)
if i != n // i:
upper_divisors.append(n//i)
i += 1
return lower_divisors + upper_divisors[::-1]
この関数make_divisors(n)
は、引数n
の約数を高速に列挙し、それをリストとして返します。
以上がPythonで約数を求める基本的な方法と、その効率化方法です。これらのコードを参考に、自分のニーズに合わせてカスタマイズしてみてください。.