サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013/03/23

昨日のプログラムを書き換えてみました

昨日のプログラムの実行結果で、素因数分解した箇所の表現がRubyのarrayそのままなので、書き換えてみました。


#!/usr/bin/ruby

require 'mathn'

product = 1
productString = ''

gen = Prime.new
gen.each do |prime|
product *= prime
productString << '*' if productString != ''
productString << prime.to_s
euclidPrime = product + 1
msg = ''
euclidPrimeDivision = euclidPrime.prime_division
if euclidPrimeDivision.length == 1 then
msg = 'prime'
else
for factor in euclidPrimeDivision do
msg << ' * ' if msg != ''
if factor[1] == 1 then
msg << factor[0].to_s
else
msg << factor[0].to_s + '^' + factor[1].to_s
end
end
end
printf("%s+1 = %d = %s\n", productString, euclidPrime, msg)
break if prime >= 29
end

実行結果は以下の通りです。

2+1 = 3 = prime
2*3+1 = 7 = prime
2*3*5+1 = 31 = prime
2*3*5*7+1 = 211 = prime
2*3*5*7*11+1 = 2311 = prime
2*3*5*7*11*13+1 = 30031 = 59 * 509
2*3*5*7*11*13*17+1 = 510511 = 19 * 97 * 277
2*3*5*7*11*13*17*19+1 = 9699691 = 347 * 27953
2*3*5*7*11*13*17*19*23+1 = 223092871 = 317 * 703763
2*3*5*7*11*13*17*19*23*29+1 = 6469693231 = 331 * 571 * 34231

Rubyの配列の扱い方がよくわかっていないので、マニュアルを見っぱなしでした。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1508-eba5c837

■  カレンダー

05 | 2017/06 | 07
- - - - 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 -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。