引数に指定した配列の最小公倍数(Least Common Multiple)を求めます。
- 構文
- Double = LCM( arr )
- 引数
- arr
- 配列
- 戻値
- 最小公倍数
プログラム
//////////////////////////////////////////////////
// 【引数】
// arr : 配列
// 【戻値】
// 最小公倍数
//////////////////////////////////////////////////
FUNCTION LCM(arr[])
DIM c = LENGTH(arr)
DIM arr2[] = arr[c-1], arr[c-2]
DIM 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[])
DIM c = LENGTH(arr)
DIM 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
解説
- 2行目
DIM c = LENGTH(arr)
- 3行目
DIM arr2[] = arr[c-1], arr[c-2]
- 4行目
DIM rem = arr[c-1] * arr[c-2] / GCD(arr2)
- 5-8行目
IFB c = 2 THEN RESULT = rem EXIT ENDIF
- 9行目
arr[c-2] = rem
- 10行目
RESIZE(arr, c-2)
- 11行目
RESULT = LCM(arr)
プログラム実行例
最小公倍数を求めます
3と8の最小公倍数を求めます。
DIM arr[] = 3, 8
PRINT LCM(arr)
//////////////////////////////////////////////////
// 【引数】
// arr : 最大公約数を求める数値を格納した配列
// 【戻値】
// 最大公約数
//////////////////////////////////////////////////
FUNCTION GCD(arr[])
DIM c = LENGTH(arr)
DIM 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[])
DIM c = LENGTH(arr)
DIM arr2[] = arr[c-1], arr[c-2]
DIM 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
解説
- 1行目
- 最小公倍数を求める数値を配列に格納します。
DIM arr[] = 3, 8
- 2行目
- LCM関数で最小公倍数を求めて出力します。
PRINT LCM(arr)
関連記事
- ABS (スクリプト関数)
- 引数の絶対値を求めます。
- ARCCOS (スクリプト関数)
- 引数の逆余弦を求めます。
- ARCSIN (スクリプト関数)
- 引数の逆正弦を求めます。
- ARCTAN (スクリプト関数)
- 引数の逆正接を求めます。
- CEIL (スクリプト関数)
- 正の方向へ切り上げた数値を返します。
- EXP (スクリプト関数)
- 自然指数関数を求めます。
- LN (スクリプト関数)
- 自然対数を求めます。
- LOGN (スクリプト関数)
- 常用対数を求めます。
- ZCUT (スクリプト関数)
- マイナス値を0にして返します。プラス値はそのままの値を返します。
- INT (スクリプト関数)
- 小数点以下を切り捨てた値を返します。負の値の場合、正の値のようにより小さい値にではなく0に近い側に切り捨てされます。
- POWER (スクリプト関数)
- 数値のべき乗を求めます。
- RANDOM (スクリプト関数)
- RANDOM関数は、0以上Range未満の範囲にある乱数(整数)を返します。引数を省略した場合は、0以上1未満の乱数(小数点以下15桁)を返します。
- ROUND (スクリプト関数)
- 指定した位置で偶数丸めした値を返します。四捨五入する場合は、roundOff関数を使います。
- isEven
- 引数に指定した数値が偶数かどうかを調べます。偶数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
- isOdd
- 引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
- radToDeg
- 弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
- SQRT (スクリプト関数)
- 引数の平方根を求めます。累乗根はPOWER関数を使います。
- fact
- 引数に指定した自然数の階乗を求めます。再帰関数。二重階乗を求めるにはfactDouble関数を使います。
- factDouble
- 引数に指定した自然数の二重階乗を求めます。戻値の型はDouble型です。再帰関数。階乗を求めるにはfact関数を使います。
- degToRad
- 度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
- GCD
- GCD関数は、引数に指定した配列の最大公約数(Greatest Common Measure)を求める関数です。最小公倍数を求めるには、LCM関数を使います。
- hexToDec
- 16進数を10進数に変換します。10進数を16進数に変換するにはdecToHex関数を使います。
- decToHex
- 10進数を16進数に変換します。16進数を10進数に変換するにはhexToDec関数を使います。
- binToDec
- 2進数を10進数に変換します。10進数を2進数に変換するにはdecToBin関数を使います。
- binToHex
- 2進数を16進数に変換します。16進数を2進数に変換するにはhexToBin関数を使います。
- hexToBin
- 16進数を2進数に変換します。2進数を16進数に変換するにはbinToHex関数を使います。
- decToBin
- 10進数を2進数に変換します。2進数を10進数に変換するにはbinToDec関数を使います。
- isPrime
- 引数に指定した数値が素数かどうかを調べます。素数の場合True、素数でない場合Falseを返します。
- normalizeAngle
- 度単位の角度を0~360度に正規化します。
- divisors
- 引数に指定した数値の約数をリストを配列で返します。
- digitSum
- 引数に指定した数字和(数値の各桁を足した結果)を返します。正の整数以外を指定した場合は、エラー値を返します。
- Collatz
- コラッツ数列を求め結果を配列で返します。
- Kaprekar
- カプレカ数を求め結果を配列で返します。
- ARABIC
- ARABIC関数は、ローマ数字をアラビア数字に変換する関数です。アラビア数字をローマ数字に変換するには、ROMAN関数を使います。
- ROMAN
- ROMAN関数は、アラビア数字をローマ数字に変換する関数です。ローマ数字をアラビア数字に変換するには、ARABIC関数を使います。