LCM

引数に指定した配列の最小公倍数(Least Common Multiple)を求めます。

構文
  1. Double = LCM( arr )
引数
arr
配列
戻値
最小公倍数

プログラム

////////////////////////////////////////////////// // 【引数】 // arr : 配列 // 【戻値】 // 最小公倍数 ////////////////////////////////////////////////// FUNCTION LCM(arr[]) c = LENGTH(arr) DIM arr2[] = arr[c-1], arr[c-2] rem = arr[c-1] * arr[c-2] / GCD(arr2) IFB c = 2 THEN RESULT = rem EXIT ENDIF arr[c-2] = rem RESIZE(arr, c-2) RESULT = LCM(arr) FEND ////////////////////////////////////////////////// // 【引数】 // arr : 最大公約数を求める数値を格納した配列 // 【戻値】 // 最大公約数 ////////////////////////////////////////////////// FUNCTION GCD(arr[]) c = LENGTH(arr) rem = arr[c-1] MOD arr[c-2] IFB rem = 0 THEN IFB LENGTH(arr) = 2 THEN RESULT = arr[c-2] EXIT ENDIF RESIZE(arr, c-2) RESULT = GCD(arr) EXIT ENDIF arr[c-1] = arr[c-2] arr[c-2] = rem RESULT = GCD(arr) FEND

プログラム実行例

最小公倍数を求めます

3と8の最小公倍数を求めます。

DIM arr[] = 3, 8 PRINT LCM(arr) ////////////////////////////////////////////////// // 【引数】 // arr : 最大公約数を求める数値を格納した配列 // 【戻値】 // 最大公約数 ////////////////////////////////////////////////// FUNCTION GCD(arr[]) c = LENGTH(arr) rem = arr[c-1] MOD arr[c-2] IFB rem = 0 THEN IFB LENGTH(arr) = 2 THEN RESULT = arr[c-2] EXIT ENDIF RESIZE(arr, c-2) RESULT = GCD(arr) EXIT ENDIF arr[c-1] = arr[c-2] arr[c-2] = rem RESULT = GCD(arr) FEND ////////////////////////////////////////////////// // 【引数】 // arr : 配列 // 【戻値】 // 最小公倍数 ////////////////////////////////////////////////// FUNCTION LCM(arr[]) c = LENGTH(arr) DIM arr2[] = arr[c-1], arr[c-2] rem = arr[c-1] * arr[c-2] / GCD(arr2) IFB c = 2 THEN RESULT = rem EXIT ENDIF arr[c-2] = rem RESIZE(arr, c-2) RESULT = LCM(arr) FEND
結果
24

この記事は役に立ちましたか?
役に立った 役に立たなかった