全体像を掴むために、関数一覧を載せます。

この説明に書かれていない関数は後日載せます。

 

 

        //1)初期化

        let n : BigInt = "100"//文字列リテラル

        let m  = BigInt("10")

        let o : BigInt = 10//整数リテラル

        let p = BigInt(10)

        //2)基本演算 加法・減法・乗法・除法・剰余

        let sum : BigInt = n + m

        let sub : BigInt = n - m

        let mul : BigInt = n * m

        let div : BigInt = n / m

        let mod : BigInt = n % m

        print(sum , sub , mul , div , mod)

        //3)判定系

        let q: BigInt = "-12"

        print(q.isEven)   // true  偶数ならtrue

        print(q.isOdd)    // false  奇数ならtrue

        print(q.isPositive) // true  0より大きければtrue

        //4)桁数・変換

        let big: BigInt = "65535"

        print(big.digitCount)     // 5 桁数を取得

        print(big.toHexString())  // "FFFF" 16進数に変換

        print(big.toIntSafe())    // Optional(65535) 安全にInt型に変換

                                    //オーバーフローの場合は0

        //5) 数学関数

        //累乗

        let two: BigInt = 2

        let power = BigInt.pow(two, 100)  // 2^100

        print(power)

        //最大公約数・最小公倍数

        print(BigInt.gcd(42, 56))  // 14

        print(BigInt.lcm(12, 18))  // 36

        //平方根

        let sq: BigInt = "144"

        print(BigInt.sqrt(of: sq))  // 12

        //階乗

        print(BigInt.factorial(10))  // 3628800

        //6. 乱数生成

        let r1 = BigInt.random(digits: 5)      // 5桁ランダム

        let r2 = BigInt.random(in: 10...1000)  // 範囲ランダム

        print(r1, r2)

        //7. 素数判定

        let prime: BigInt = "32416190071" // 素数

        print(BigInt.isProbablePrime(prime, 10))  // true