ホームページ  >  記事  >  バックエンド開発  >  N 個の数値の積の因数の数

N 個の数値の積の因数の数

WBOY
WBOY転載
2023-08-30 17:37:06687ブラウズ

N 個の数値の積の因数の数

#数値の約数とは、余りを残さずに割り切れる数値のことです。言い換えれば、数値 n の約数は、他の整数を乗算すると n になる数値です。数値の因数とも言えます。

リーリー

たとえば、5 を 60 で割ると 12 が得られ、その逆も同様であるため、12 と 60 は 60 の約数とみなすことができます。

因数の数と N の数値を乗算した数

与えられたタスクは、与えられた数値の積の約数の数を見つけることです。例を通してこの問題を理解してみましょう。

6、6、10 という数字が与えられたとします。これらの数値の積は 120 で、120 の約数は 1、2、3、4、5、6、8、10、12、15、20、24、30、40、60、120 になります。したがって、出力は

16 となるはずです。 リーリー

モジュロ演算子を使用する

これを実現する 1 つの方法は、

モジュロ (%) 演算子を使用して約数を見つけ、1 から product まで反復してそれらをカウントすることです。

モジュロ演算子 (%) 演算子は、除算演算の剰余を取得するために使用されます。割り算の余りがゼロの場合、被除数が約数で割り切れることを意味します。たとえば、(30 % 5) は 0 であるため、30 は 5 で割り切れます。

配列内のすべての数値の積の約数の数を計算します。

  • 乗算 演算子を使用して配列内のすべての数値を乗算し、結果を product という名前の変数に保存します。

  • 1 から Product までのモジュロ演算子を使用し、Product を各数値で除算して剰余を取得します。

  • 変数 count を作成し、余りが 0 の場合は count 変数をインクリメントします。

Example

の中国語訳は次のとおりです:

Example

次のプログラムは、指定された数値の積の約数の数を計算します。 -

リーリー ###出力### リーリー

-数値が大きい場合、この方法は非常に非効率的です。数が多いので商品も大きくなります。これにより、反復回数が膨大になり、時間の複雑さが増加します。

素因数分解を使用する

N が合成数の場合、

リーリー

a、b、c が素因数である場合、N の約数の数は次の式で求められます

リーリー

上記の概念を使用して、N 個の数値の積の約数の数を求めます。

アルゴリズム/ステップ

すべての N 数値を乗算し、結果を
    product
  • という名前の変数に保存します。

    for ループを 2 から平方根
  • product
  • まで繰り返します。

    製品の主因数を取得します。これを行うには、モジュロ演算子を使用して、
  • product
  • が x の現在の値で割り切れるかどうかを確認します。可能であれば、x は素因数として保存され、

    count は素因数のべき乗として保存されます。

  • ライブラリと Push_

    back() 関数を使用して、素因数とその指数をベクトル コンテナ primeFactor および ## に保存します#パワー中。 素因数が残っている場合は、それも保存します。

  • 上記の式を使用して、0 から素因数の数まで反復して約数を計算します。

  • Example

    の中国語訳は次のとおりです:
  • Example

以下は、素因数分解法を使用して、指定された数値の積の因数の数を求めるプログラムです -

リーリー ###出力### リーリー

ネストされたループを使用する

入れ子になったループを通じて、すべての N 個の数値の積を求めることもできます。外側のループでは、1 から

product

までのすべての数値を反復する必要があります。この数値の範囲内で、考えられるすべての約数が見つかります。ネストされたループでは、各数値の約数とその倍数を計算します。

Example

の中国語訳は次のとおりです:

Example リーリー ###出力### リーリー ###結論は### モジュロ演算子、素因数分解、ネストされたループなどの使用を含む、N 個の数値の積の約数の数を見つけるさまざまな方法について説明しました。数値が大きい場合、モジュロ演算子を効率的に使用できません。最適化された結果を得るために、素因数分解とネストされたループを使用できます。

以上がN 個の数値の積の因数の数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。