BigIntについての一般的な説明は他の記事を参照してください。

ここでは公開するBigIntについて簡単に説明します。

BigIntは整数型(Int型)を扱いますが、Int64で扱える範囲が約2^63であるのに対し、BigInt型は

    -♾️< x <♾️

となります。実際にはメモリの許す限りの範囲となります。

 例 

let a = BigInt("2")

let b = BigInt("1000")

print(a ^^ b)

 

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

 

桁数が非常に大きい場合、関数によっては(冪乗関数など)演算に非常に時間がかかります。

 

BigInt.swiftには以下の関数が含まれています。

 

四則演算     +,-,*,/,%

関係演算子と代入演算子    >,<,>=,<=,+=,-= 等

冪乗演算子    a^^b

平方根      sqrt(of:n)

平方数判定    isPerfectSquare

素数判定      isProbablePrime

最大公約数    gcd

最小公倍数    lcm

モジュロ累乗(aのk乗をmで割ったあまり)    powMod(a,k,m)

偶奇判定     isEven, isOdd

乱数生成(桁数指定)        BigInt(count)

乱数生成(範囲指定)        BigInt(renge)