くいなちゃん2021年04月17日


プログラミング言語Kuin」のAPIリファレンスページです。

 math@gcd

最大公約数を求める関数です。

func gcd(a: int, b: int): int

a整数1
b整数2
戻り値aとbの最大公約数
計算量: aとbの小さいほうをとして、
aとbのどちらかは0以外でなければなりません。 aやbが負の場合は、絶対値の最大公約数に等しいです。 すなわち、
発生条件ビルド例外コード
aとbがともに0dbgのみ0xE9170006

 math@lcm

最小公倍数を求める関数です。

func lcm(a: int, b: int): int

a整数1
b整数2
戻り値aとbの最小公倍数
計算量: aとbの小さいほうをとして、
aとbのどちらかは0以外でなければなりません。 aやbが負の場合は、絶対値の最小公倍数に等しいです。 すなわち、
発生条件ビルド例外コード
aとbがともに0dbgのみ0xE9170006

 math@modMul

オーバーフローさせずに乗算の剰余を求める関数です。

func modMul(a: int, b: int, modulus: int): int

a整数1(0以上の値)
b整数2(0以上の値)
modulus除算する値(0以上の値)
戻り値「a*b%modulus」の値
計算量: aとbの小さいほうをとして、
単に「a*b%modulus」を計算すると、大きな値のときにオーバーフローして正確な結果が求まりませんが、この関数はオーバーフローを回避して計算するため正確な値が求まります。
発生条件ビルド例外コード
a、b、modulusのいずれかが負dbgのみ0xE9170006

 math@modPow

オーバーフローさせずに冪の剰余を求める関数です。

func modPow(value: int, exponent: int, modulus: int): int

value整数1(0以上の値)
exponent整数2(0以上の値)
modulus除算する値(0以上の値)
戻り値「value^exponent%modulus」の値
計算量: exponentをとして、
単に「value^exponent%modulus」を計算すると、大きな値のときにオーバーフローして正確な結果が求まりませんが、この関数はオーバーフローを回避して計算するため正確な値が求まります。
発生条件ビルド例外コード
value、exponent、modulusのいずれかが負dbgのみ0xE9170006

 math@prime

素数かどうかを高速に判定する関数です。

func prime(n: int): bool

n整数
戻り値nが素数ならtrue、素数でなければfalse
計算量: nが96000以下のときは、。 nが96000より大きい場合は、nを、繰り返し回数をとして、。 繰り返し回数はnがintの範囲だと最大でも12になる
nが1以下の場合は素数ではないためfalseが返ります。
素数バッファと十分に繰り返されるミラー・ラビン素数判定法を併用し、誤りのない素数判定を高速に行います。

 math@primeFactors

素因数分解を高速に行う関数です。

func primeFactors(n: int): []int

n整数
戻り値nの素因数
計算量: 正確な計算量は未解決
戻り値の配列には、nの素因数が昇順に格納されます。 例えばnが18のとき、戻り値は「[2, 3, 3]」になります。
nが1以下の場合、空の配列が返ります。
ポラード・ロー素因数分解法の改良版を十分繰り返し適用し、誤りのない素因数分解を高速に行います。
1618606239jaf