素因数分解するだけ問題が2つありました。smoothも自明のはずでした。numberなんかという単語がヒットします。小さい素数の積ででてきているような数のことのようです。素因数分解アルゴリズムについて若干でも知っていれば、ここからP-1法とかのあたりを連想するのは簡単なはずです。さっきWikipedia見たら、powersmoothって書いてありました。factor"みたいにググったら、gmp-ecmというのがヒットして、これP-1法もできるらしいんですが、なんかできない。algorithmを採用しているせいかなぁという気がしてきました。今回の場合最大の素数が5で、大きな素数は1つもないので。(天下り的ですが)競技中はmoratoriumくんに頼んだら一瞬で素因数分解してくれました。gmp-ecmは役に立たないことが判明したので、まあ実装し直すかーという話です。言語は最近勉強しているRustです。github.comnum::bigintつよい。sqrtやlogはないっぽい。ついでにFermat法も実装しました。2014の4096bit合成数も素因数分解できます。a4lg.comP-1法はgmp-ecmでいうところのB1パラメタがあって、これによって計算時間が変わりますが、ソース中で1000となっています。buildにすれば10秒以内に終わります。buildだと無限に終わりません。(1<<265))の素因数分解が秒くらいで終わりますというくらいですね。アンパサンドがたくさんになると、C言語病のせいで、特に初心のRustだと不安になるんですが、やっぱり筋の悪いコードなんですかね。blindなかなか好きな問題でした。writeupwasamusumeで参加しました。rop0)月別アーカイブはてなブログをはじめよう!cookie-sさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。