リンク

 

アメーバーブログのリンクの貼り方がわからないため非常に読みにくいと思いますが、できるだけ早く解決します。

今回のテーマはBigIntの初期化です。初期化の方法は2種類あり文字列リテラルと整数リテラルです。

 

初期化

文字列から

let a = BigInt("12345678901234567890")

print(a)  // 12345678901234567890

整数から

let b = BigInt(99999)

print(b)  // 99999

または

let a: BigInt = "35897816"// 文字列リテラル

let b: BigInt = 12345678// 整数リテラル

 

ただし、整数リテラルはswiftの制限で桁数に限界があります(たぶん19桁)。文字列リテラルは桁数に制限はありません。整数リテラルの制限は初期化の場合のみで内部では制限はありません。

 

override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        //超巨大整数の初期化

        let a: BigInt = "35897816311235186191673532332159873246835541659178165312125418891878943258979163333538997789851433164964896589197613142513212654189167896428915429163549861"

        let b: BigInt = "165489798657564298185589756642935161368914345332564981891534241322894876178651323123489875164135718967454332654989719834898"

        let c: BigInt = a * b

        print("c = \(c)")

        let d: BigInt = 1234567890123456789

        let e: BigInt = a * d

        print("e = \(e)")

    }

 

c = 5940722393592538482445023861837632647284327847242635780714375432532799859121769337723224901140852894048317990830996969873872675824247649068179912366047185268269522954877171885224950521334484552230754466592522389850834498643945025877256306279804752974966337754414476668510849178

e = 44318291343401036244308449091202546695029343228880007067779738485059312096338941742119369657196807929359889031788567481008195648642501295110346723445886682441652111680456329