BigIntを使った 巨大数の素数判定 と 巨大素数の生成 例題です。どちらも乱数で生成しているので、毎回異なった結果となります。

 

▶️超巨大数の素数判定です。

 

let a : BigInt = BigInt.random(digits:  100)//100桁の乱数を発生

let p : Bool = a.isProbablePrime//aが素数か判定

print("a = \(a)")

print("素数? : \(p)")

 

生成数 a = 4080576389615484639217410319794035285306219153424738026881390666490713196479240782101365258260755849

素数? : false

 

▶️超巨大素数の生成

 

let q : Int = 500

let p:BigInt = BigInt.randomProbablePrime(digits: q)!//q桁の素数を生成

print("\(q)桁の素数")

print("p = \(p)")

 

500桁の素数

p = 74393286265927864777894845689626703842014423699935530360926095464470636698662043463433058977577418309173164487180016273922124156845436693893569186306744061374216048021574779826731892493002523820872339518999872773201145745774846086170094938019205605075864239436606264185489246139479201621920864079610821287487036480667759434721706510816168747423858993799743262542347998436355183612922006505878617742772389517711082003840028109781584293467388462427533512307204450991736332324003703122177166140650417279