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)
