読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 4 / 最大の回文積

左右どちらから読んでも同じ値になる数を回文数という。2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である。3桁の数の積で表される回文数の最大値を求めよ。

Problem 4 - Project Euler

回文数の判定は IntegerDigits と Reverse でできます。

IntegerDigits[x] == Reverse[IntegerDigits[x]]

これを判定条件としてループをまわします。i*j と j*i の両方を調べる無駄を避けるため,100 ≦ i ≦ j ≦ 999でやりました。

ついでに Length で個数も数えてみたら1231個でした。

(i, j)として C[900,2] 組について調べていますから,回文数の割合は約0.3%です。


追記(2017/04/20)

元記事を書いた頃は PalindromeQ で回文数の判定ができることを知りませんでした。ところが,これを使うように直してみたら遅くなってしまいました。なぜ? 並列化しても無駄でした。