Euler : Problem 87

Posted by TAKAIY On 2012年7月25日水曜日 0 コメント

素数を2乗,3乗,4乗した数の和についての問題です。

とりあえずfor(内包表記)を使ってやってみるかな、と思ってたらできちゃいました。




素数を2乗,3乗,4乗したものの上限以下のリストを作って、合計が上限以下になるように組み合わせます。
工夫といえば、

  • a,b,cを2乗,3乗,4乗の順にしてしまうと、あふれてしまったので、逆順にした
  • 複数の方法で表現できる数がある可能性を考慮した。(重複を考慮しない処理だと数が違うので、あるようです。)

ですかね。

最初に作ったのは、きたなくて、関数化されてませんでしたが、後で整形してます。
初めは、setのatomを使ってましたけど、使わなくてもできるかなと思って使わないバージョンも作りました。速度はほぼ一緒です。



・pe87
 特に解説はしません。

・pe87-no-atom
 atomを使わないバージョンです。



0 コメント:

コメントを投稿