Python: 効率的な素因数分解
質問 1:
最大値を計算する既存の Python プログラムについて理解する600851475143 の素因数分解と代替素因数分解の探索
答え:
オンラインで見つけたコードは、最大の素因数に達するまで数値を最小の素因数で繰り返し除算することで効率的に動作します。数値は現在の素因数で割り切れませんが、素因数は増加し続けます。
別の方法は、ブルート フォース アプローチを使用することです。
<code class="python">def prime_factors(n): i = 2 factors = [] while i * i <= n: if n % i: i += 1 else: n //= i factors.append(i) if n > 1: factors.append(n) return factors</code>
この関数はテストします。 2 から指定された数値の平方根までのすべての数値を計算して、その素因数を決定します。ただし、この方法は、数値が大きい場合には効率が低くなります。
質問 2:
提供された 2 つのコード スニペットの効率を比較します。
答え:
2 番目のコード スニペットは、単純にカウンターをインクリメントしますが、すべての整数をチェックするため、かなり遅くなります。一方、最初のコード スニペットは最小の素因数のみをチェックし、すぐにその素因数で除算して、その素因数を効率的に削除します。
以上がPython におけるさまざまな素因数分解法の効率はどのように比較されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。