素数を2乗,3乗,4乗した数の和についての問題です。
とりあえずfor(内包表記)を使ってやってみるかな、と思ってたらできちゃいました。
素数を2乗,3乗,4乗したものの上限以下のリストを作って、合計が上限以下になるように組み合わせます。
工夫といえば、
- a,b,cを2乗,3乗,4乗の順にしてしまうと、あふれてしまったので、逆順にした
- 複数の方法で表現できる数がある可能性を考慮した。(重複を考慮しない処理だと数が違うので、あるようです。)
ですかね。
最初に作ったのは、きたなくて、関数化されてませんでしたが、後で整形してます。
初めは、setのatomを使ってましたけど、使わなくてもできるかなと思って使わないバージョンも作りました。速度はほぼ一緒です。
・pe87
特に解説はしません。
・pe87-no-atom
atomを使わないバージョンです。
0 コメント:
コメントを投稿