Project Euler 108
ディオファントス逆数の問題
について式変形してとする. これは右辺>0 であるので左辺>0で,y>0なのでとなる. とするとxが最大のときとなりでこのときよってnについてxの範囲はである. が整数になれば良いので以下のようなコードを考えた.
しかしコレを答えが出るまで実行するとかなりの時間がかかってしまう. もっとうまい方法はないのだろうか?
【2016/10/25 追記】
解答投稿欄を見たらあ上手いコードがあったので改定した. Gistに直接書いたのでコピペだと無理かも.
なぜ f=2*3*5*7*11*13でf,2f,3f,..,15f を調べればよいのか? これは (x,y)の解が豊富に得られる可能性が高いから. 例えば同じ素数の積の26と3571113では前者は(20,26),...,(26,20)の7通りの分解の仕方しかないが後者は (1,2*3*5*7*11*13),(2,3*5*7*11*13),... と (a,b)とするとそれぞれ{2,3,5,7,11,13} → {a,b}の写像の総数に等しいので26通りある. 証明にはなっていないがなるべく多くの素数で表せたら豊富に解の組み合わせが得られる. f=2*3*5*7*11*13*15*17にするとnsols(f)で既に1000を超えてしまっている.
【注意】 なんか上手くtex記法使えなくて崩壊してる.