« Project Euler - Problem 34 | トップページ | Project Euler - Problem 36 : 0.1s (Ruby 1.9) »

2009年7月19日 (日)

Project Euler - Problem 35 : 1.0s (Ruby 1.9)

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


この問題に関しては、以前にも記事を書きました。

基本的な考え方は以前と変わっていませんので、アルゴリズムに関する説明は以前の記事をご覧ください。

わざわざまた記事を書いたのは、コードを見直して、「若干見やすくなったかな?」と感じたので……ただそれだけです。

# -*- coding: utf-8 -*- require 'math_tool' class Array # == 循環素数となる配列か? def circular_prime? len = self.size arr = self * 2 len.times do |i| next if i.zero? return false unless arr[i, len].to_i.prime? end return true end end p_lst = prime_list(100_0000) # 一桁の素数はそのまま循環素数として扱う。 index = p_lst.find_index{|i| i > 9} ans = p_lst[0, index] p_lst.drop(index).each do |i| arr = i.to_a # 偶数または 5 を含む数を除外する。 next if arr.any?{|j| j.even? or j == 5} ans.push(i) if arr.circular_prime? end puts ans.size

« Project Euler - Problem 34 | トップページ | Project Euler - Problem 36 : 0.1s (Ruby 1.9) »

Project Euler」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: Project Euler - Problem 35 : 1.0s (Ruby 1.9):

« Project Euler - Problem 34 | トップページ | Project Euler - Problem 36 : 0.1s (Ruby 1.9) »

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            
フォト

最近のトラックバック

無料ブログはココログ