【Kotlin/JVM】n!の下290桁が0となる最小の自然数nを求める

ネタ元：

https://qiita.com/B3QP/items/7578688dec1d5e8d2e78

n!の下290桁が0となる最小の自然数nを求める。

```Kotlin
import java.math.BigInteger

fun main() {
    sequence {
        var n = BigInteger.ONE
        var factorial = BigInteger.ONE // n!
        while (true) {
            yield(n to factorial)
            factorial *= ++n
        }
    }
        // ^ n と n! のペアを yield する Sequence。
        // ^ n は 1 から順に 1 ずつ増えていく。
        .find { (_, factorial) ->
            factorial % BigInteger.TEN.pow(290) == BigInteger.ZERO
        }!!
        // ^ 下 290 桁が 0 である（10の290乗で割り切れる）最初の n! を見つける。
        // ^ 見つかるまで続けるので返値は必ず non-null。
        .also { (n, factorial) ->
            println("$n! = $factorial") // > 1170! = 385592176713081905777902060537842937133444270763926883602505708504686828523855227736782513020240642477050060973716744485519220353584669286420027170808127302720699016954608238473674353770528409106749447927476477236411677646111332144137405703434344736931681418145778630072594748329716812084825177801594970266355143734157323691647373999306397991646320995132137373276929201067604618130494049409596259237229702387257422558840859528287825857910523170560588303635973317591255204546775135073285285878999917534483481914016611909634668946741353475159673090194800545290093801725368807301380867983212039014214265075015671756952790958574797599942904577418150219819188925707102238544747990821435098160386511692360160773478510741999591766968391163564106673059305143121362265015217415144282507739825314598458074771983211360774602775111642814771857044418793841119742035165824963835337868871088872381096259147487782688562909363841409964985060069231520990150218677187109335823954632872809344266246310724508740449261748597796411072248851088569241458572538194573316061120827086334791278876552180284013017811860384060797887094806367728668640229687480911270206188005954330023812714920892436721103616546630819076292692146948752666284442909800108685033454308083146705070678246512925168663800199686363976911540113404857996860080323014624931280392542362037914323938677568681743249721245815347866920743972468249027464230458639103789870896642945718045234361503690556177300957112100243651013552010598029223494728811615297077428597916371556113562640258973796712710956672106567303726858670156709778194593026920479341721876797300033531498046532317148488101819465339808819179802510491249935672952266513303607769862335587055757815071454115418799114339624558802961363266719780280640362520223947469571164185509943905318196725856928723203277687694649204992578641481148170808669974812844998900444515793233681341246883473172416321028987562625596545204666725057123072278950141098695714338879120868748166402995648937988676334898014515564994985745325407136426128517200366978204727138169309280193720398541518728985961305012276565415046078178323699570396804554663420103819595174809218301517464895569356696025580107615313075598468027313550716208814056419372495326703420023270078888865811090493524473060270050928442312899585585934941788822944497683818951238337611559226616340301545265720696567139051189275787730631377952371062791230226046999791565472869605081294204657336604974763107527377234870331566796421650534000892115906187724861971114775685373821195497869022738976176984608724133494327257024213321245889837196091331812225897490451092661718858474314925751977853723706885823318095811113816515263910506753838854997969254950504859692633315542537689338474630801472992662724878978439933475360492719262502466282099789861435709941557504665190400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        }
}
```

計算に時間がかかるかと思ったけど一瞬で終わった。
`BigInteger` 優秀。

Kotlin だと `BigInteger` の四則演算を、メソッド呼び出しではなく演算子（記号）で書けるから書きやすく読みやすい:heart_eyes:


／以上