LCM は最小公倍数の略で、数値セットの最小公倍数は、指定されたセットに存在するすべての数値で割り切れるすべての数値の中で最小の数値です。特定の問題の説明とともに完全なコードを確認します。この記事では、一連の LCM クエリ用の JavaScript プログラムを実装します。
この問題では、整数を含む配列と、指定された配列範囲を表す数値のペアを含む別の配列クエリが与えられ、その指定された範囲内のすべての要素の最小公倍数を計算する必要があります。例えば -###
指定された配列が [1, 2, 3, 4, 5, 6] で、クエリ配列が [[1,3], [2,5]] の場合、最初のクエリ要素は [2] になります。 、3、4]および12はLCMです。2 番目のクエリ要素が [3, 4, 5, 6] の場合、LCM は 60 です。
LCM と GCD の数学的関係
リーリー
つまり、すべての数値の GCD と積を求め、そこから O(1) 演算でその数値の最小公倍数を求めることができます。単純な方法
###例### リーリー
時間と空間の複雑さ上記のプログラムでは、クエリの数が N に等しい場合、その時間計算量は N
2
より大きくなり、この方法は非効率的になります。これが別の方法であることを見てみましょう &miinus;線分ツリー法
線分ツリーは、問題を複数の線分に分割し、それらを 2 のべき乗形式で接続するために使用される高レベルのデータ構造です。これには範囲クエリ用にある程度のスペースが必要で、結果は対数時間で生成されます。コードを見てみましょう -以上が範囲 LCM クエリ用の JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。