ホームページ > バックエンド開発 > Python チュートリアル > Python で数値のすべての因数を効率的に見つけるにはどうすればよいですか?

Python で数値のすべての因数を効率的に見つけるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-29 16:05:02
オリジナル
584 人が閲覧しました

How to Find All Factors of a Number Efficiently in Python?

Python で最大の効率で数値の因数を求める

数値のすべての因数を求めることは、特に次のような問題を扱う場合には困難なタスクになる可能性があります。多数。この記事では、Python 2.7 でこれを実現する効率的な方法について説明します。

因数分解を使用した最適なアプローチ

数値のすべての因数を見つけるには、それを分解することが重要ですその主な要因に。素因数がわかれば、残りの因数を見つけるのは簡単です。

以下のコード スニペットは、このアプローチを利用しています。

<code class="python">from functools import reduce

def factors(n):
    return set(reduce(
        list.__add__,
        ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))</code>
ログイン後にコピー

この関数は、数値 n を受け入れ、以下を含むセットを返します。

アルゴリズムを理解する

アルゴリズムの中核は、range(1, int(sqrt(n)) 1) if n % i == 0。この部分は因数のペアを生成します。

1 から n の平方根までの各数値 i について、n が次で割り切れるかどうかをチェックします。私は残りません。そうである場合、i と n//i は両方とも n の因数であるため、ペアに両方が含まれます。

検索範囲の最適化

検索する理由n の平方根までは、i が n の因数である場合、そのペアの因数 n//i もその範囲内で見つけなければならないということです。これにより、因子を見逃すことがなくなります。

重複の処理

完全正方形には重複した因子があるため (例: 4 には因子 2 と 2 がある)、set( ...) コード スニペットの最後で、ペアのリストから重複を削除します。これにより、一意の因数のきれいなセットを確実に取得できます。

使用例

この関数を使用するには、因数分解する数値を引数として渡すだけです。

<code class="python">result = factors(24)  # -> {1, 2, 3, 4, 6, 8, 12, 24}</code>
ログイン後にコピー

これは、数値 24 のすべての因数を含むセットを返します。

以上がPython で数値のすべての因数を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート