\

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で約数を求める基本的な方法と、その効率化方法です。これらのコードを参考に、自分のニーズに合わせてカスタマイズしてみてください。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です