前提・実現したいこと
競技プログラミングをするときに約数の高速列挙が必要になり,以下のサイトを見つけました。
約数を高速で列挙するコード(Python)
ただ,このコードでなぜ約数の列挙ができるのかが理解できません。
まずなぜ範囲が1~int(n^0.5)でいいのでしょうか。
また,6行目のnが平方根の時の処理も良く分かりません。
何か前提知識があるのなら,それも踏まえて教えてください。
よろしくお願いします。
該当のソースコード
def
1 divisors = [] 2 for i in range(1, int(n**0.5)+1): 3 if n % i == 0: 4 divisors.append(i) 5 if i != n // i: 6 divisors.append(n//i) 7 8 # divisors.sort() 9 return divisors
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/08 04:49 編集
2020/04/08 05:10