のてすきあ − 完全独習非プログラマー −

Haskell で Project Euler を解く素人遊び

Problem 49

4桁の素数3つからなる等差数列で、各々が他の並べ替え(同じ4つの数字を使っている)になっている組を見つける。

コードは普通に書くだけであるが、4桁の素数が同じ数字の組み合わせであることから、等差数列の公差が9の倍数でなければならないと分かるので、それを利用して若干の高速化を図る。(※4桁の数字を1000a + 100b + 10c +d と置くと、その並び替えは例えば1000c + 100d + 10 b + a のように表現される。abcdがどのような順番でも、2つの4桁の数の差は9の倍数になる)

素数が絡むと時間がかかるのはある程度許容するとして、それでも1秒以内には終わる計算なので、これで良しとした。

普通が一番☆