素因数分解した結果が小町になる数を求める

問題
ある整数 N を素因数分解したときに、因数が1-9をひとつずつ使っている Nを求める。
なお、それぞれの因数は、100未満とする。
ただし、求める N は、intで表現できる数とする。

例えば、7334490 を素因数分解すると、2 * 3 * 5 * 41 * 67 * 89 となり、1から9までの数が
一つずつ現れます。この 7334490 のような数を求めよう、ということです。

以下は、作成したSilverlightプログラムです。Solveボタンを押せば解が表示されます。

この問題をどうやって解くかですが、ある数の素因数分解し、それが小町になっているかを調べるとすると、
ものすごく効率が悪いと思われます。
そのため、以下のような手順で求めています。

1. 100未満の素数を全て求め、配列に格納します。
2 .この素数を組み合わせ、小町数になるかどうかを調べます。
3. 小町数になっていれば、それを掛け合わせ、求める N を導き出します。


それぞれの因数が、100未満という制限があるため、1から順に素因数分解していった場合と比べると、
かなり効率よく解を求めることができます。
まあ、実際には、1よりも大きな値から素因数分解していくことになると思いますが、その開始する妥当な
値はいくつからになるのかなー。

結果をみて面白いと思うのは、下一桁が 0, 5, 8 の3種類しかないことですね。

以下、C# + Silverlight のコードです。


■Solver.cs


■MainPage.xaml.cs


■MainPage.xaml