PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 118 / パンデジタル素数集合

1から9のすべての数字を使い,自由につなげることで 10 進数の数字を作り,複数の集合を作ることができる。
集合 {2,5,47,89,631} は面白いことにすべての要素が素数である。

1から9の数字をちょうど1個ずつ含み,素数の要素しか含まない集合はいくつあるか?

Problem 118 - Project Euler


1から9までの順列を適当なところで切って,素数かどうか調べます。部分集合への切り分け法は StackExchange を参考にしました。

mathematica.stackexchange.com

ダブリが生じることがあります。たとえば 1~5まで使う場合,次の2つは同じ集合を与えます。

  • {1,2,3,4,5}→{{1},{2},{3,4,5}}
  • {2,1,3,4,5}→{{2},{1},{3,4,5}}

これを避けるため,Sort して DeleteDuplicates しています。140秒かかりました。