« Project Euler - Problem 39, 40 | トップページ | Project Euler - Problem 42 »

2009年7月29日 (水)

Project Euler - Problem 41

問題はこちらをご覧ください。


いきなり全ての桁の Pandigital 数を調べる前に、各桁の pandigital 数の構成要素について、ちょっと考えてみましょう。

Pandigital 数のうち、1 桁と 4 桁と 7 桁以外は構成する数を足すとすべて 3 の倍数になります。したがって、これらの数からなる Pandigital 数は 3 の倍数になるため、素数には成りえません。

また、1 桁の Pandigital 数は 1 しかなく、これは当然素数ではありません。

したがって最大の素数を探すのであれば、7 桁と 4 桁のみを探せば良いことになります。

実際の答えは 7 桁の Pandigital 数なのですが、今回のコードでは、7 桁で見つからなかった場合には 4 桁も探すようになっています。

require 'math_tool' def pandigital_prime(d) # d : 桁数 (1 .. d).to_a.reverse.permutation do |arr| num = arr.to_i return num if num.prime? end return nil end puts (pandigital_prime(7) or pandigital_prime(4))

« Project Euler - Problem 39, 40 | トップページ | Project Euler - Problem 42 »

Project Euler」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112020/45773783

この記事へのトラックバック一覧です: Project Euler - Problem 41:

« Project Euler - Problem 39, 40 | トップページ | Project Euler - Problem 42 »

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ