「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python で数値の因数を効率的に見つけるにはどうすればよいですか?

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

2024 年 11 月 8 日に公開
ブラウズ:799

How to Find Factors of a Number Efficiently in Python?

Python で数値の因数を効率的に見つける

数値の因数を求めることはさまざまな分野で一般的なタスクであり、Python では複数の機能が提供されます。

最適化されたアプローチの 1 つは、リスト内包表記とともに Python の reduce 関数を利用することです。この簡潔なソリューションは、指定された数値のすべての因数を効果的に見つけます。

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)))

根拠:

  • ジェネレーター式 ([i, n//i] for i in range(1, int(n**0.5) 1) if n % i == 0)) は因数のペアを生成します [ [factor1、factor2] ここで、factor1 は数値 n の平方根以下です。この最適化により、計算時間が短縮されます。
  • reduce 関数は、ペアのリストを 1 つのリストに連結しますが、設定されたデータ構造は、完全正方形の場合に発生する可能性のある重複を削除します。
  • 数値 n の場合、数値自体は因数として常に 1 と組み合わせることができるため、リスト内包表記は n の平方根までループするだけで済みます。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3