2008/08/29
「hrkt0115311の、教えて習うRuby教室。」Vol.72 ~Rubyで素因数分解できるかなの巻~
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 〜 Ruby始めました 〜 「hrkt0115311の、教えて習うRuby教室。」Vol.72 ━━━━━━━━━━━━━━━━Rubyで素因数分解できるかなの巻 おはようございます。hrkt0115311です。毎回メルマガを読んでいただきありがとう ございます! LDRでRSSを登録して下さっている方もありがとうございます。 バックナンバーをご覧下さっている方にも感謝します。励みになります! http://reader.livedoor.com/about/http://archive.mag2.com/0000267290/rss10.xml 今回は素因数分解に挑戦してみました!! それでは本日のメルマガ始めます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ○目次 ・ Rubyで素因数分解できるかな(出力結果) ・ Rubyで素因数分解できるかな(解説) ・ Rubyで素因数分解できるかな(スクリプト) ・ 編集後記 ━━━━━━━━━━━━━━━━━━━━━━━━━━━免責事項 ソースコードは、発行者が実際に動かし、構文チェックなどもしていますが ご利用になられて万一損害が生じた場合、保証することができません。 ご利用になられる際は、ご自身でご確認になられた上で、お試し下さい。 ━━━━━━━━━━━━━━━━━━━━Rubyの導入方法について OSは何をお使いですか? LinuxでもMacOSでもWindowsでも、Rubyの 公式ページでインストール方法が説明されています。 ○Ruby Install Guide http://preview.tinyurl.com/4ghc3o ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ○Rubyで素因数分解できるかな(出力結果) $ ruby ssbk.rb 12を素因数分解すると 2の2乗 3の1乗 上記結果になります。 35を素因数分解すると 5の1乗 7の1乗 上記結果になります。 180を素因数分解すると 2の2乗 3の2乗 5の1乗 上記結果になります。 2008を素因数分解すると 2の3乗 251の1乗 上記結果になります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ○Rubyで素因数分解できるかな(解説) 12だったら、2,2,3、みたいに素因数分解するの、手書きで自分が 行うならいいのですが、Rubyに「こんな風にやって下さい」と伝えるには どうしたものかなぁと思いまして、リファレンスマニュアルを読んでいたら 普通にメソッドが用意されていましたorz 「.prime_division」というメソッドで、mathnをrequireすると使える ようになります。素因数分解した結果を多次元配列で返すので、 多次元配列をどう読みやすく表示しようか、という点だけ工夫すれば できてしまいました。 素因数分解自体を行うアルゴリズムはまだ書けないままですorz ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ○Rubyで素因数分解できるかな(スクリプト) =begin 1.素因数分解を実装しようと思ったら既にメソッドがあった件 2.http://www.ruby-lang.org/ja/man/html/mathn.html 3.私がやったことは、多重配列として返された結果を整形したことのみです。 =end require "jcode" require "mathn" require "generator" $KCODE = "UTF-8" class PrimeFactors def initialize(n) @n = n end def p puts "#{@n}を素因数分解すると\n\n" x = @n.prime_division (x.size).times do |i| puts "#{x[i][0]}の#{x[i][1]}乗" end puts "\n上記結果になります。\n\n" end end a = PrimeFactors.new(12) a.p b = PrimeFactors.new(35) b.p c = PrimeFactors.new(180) c.p d = PrimeFactors.new(2008) d.p ■ 編集後記 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 「hrkt0115311の、教えて習うRuby教室。」を最後までお読みいただき ありがとうございます。いかがでしたか? もう蟋蟀が鳴いている地域もあるのですね。私が暮らす地域では、まだ 蝉が鳴いています。しばらく続いた雨が上がり、代わりに蝉の大合唱が 戻ってきました。それにしても、雨の間、蝉はどこにいたのでしょう。 説明不足・分かりにくい点・私の理解の誤りなど、お気づきになられた点があれば、 お気軽にご意見・ご感想をお寄せ下さい。 enjoy.ruby@gmail.com にて、 メルマガ読者の皆さまからのフィードバックをお待ちしています。 それではまた、次号でお会いしましょう。 ■ いただいた反響について ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 「こんな仕組み作れないかな」とか「説明不足で分からないよ」といった ご指摘をお寄せいただけると嬉しいです。みなさまの声で、メルマガを 育てていただければ嬉しいです。また、メルマガで、頂戴したメールの 一部を紹介させていただく可能性があります。差し支えがある場合は 「発行者のhtkt0115311に読んで欲しいだけで、メルマガには掲載しないで」 とお書きいただければ幸いです。 ■ 転送や再配布について ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ blogなどでご紹介いただく際は、 http://www.mag2.com/m/0000267290.html などを並記していただき、私の書いた文章であることが分かる形に していただけると幸いです。またメルマガの転送については、転送者さんと 転送したメルマガを受け取られた方が迷惑でない範囲であれば歓迎します。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ メールマガジン「hrkt0115311の、教えて習うRuby教室。」 ○発行者 htkt0115311 ○発行システム 『まぐまぐ!』 http://www.mag2.com/ ○配信中止はこちら http://www.mag2.com/m/0000267290.html ○公式サイト http://enjoy-programming.g.hatena.ne.jp/hrkt0115311/ ○日記 http://d.hatena.ne.jp/hrkt0115311/ ○Twitter https://twitter.com/hrkt0115311 ○お問い合わせ enjoy.ruby@gmail.com ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
2009/08/27 「hrkt0115311の、迷えるプログラミング教室」Vol.91 ~htmlSQLで「みそ録」作ったよ! の巻~
-
2009/07/19 「hrkt0115311の、迷えるプログラミング教室」Vol.90 ~URL指定すると、はてな記法を返すスクリプトの巻~
-
2009/07/13 「hrkt0115311の、迷えるプログラミング教室」Vol.89 ~XML処理するTwitterまとめスクリプト改編の巻~
-
2009/07/13 「hrkt0115311の、迷えるプログラミング教室」Vol.89 ~XML処理するTwitterまとめスクリプト改編の巻~
-
2009/04/25 「hrkt0115311の、迷えるプログラミング教室」Vol.88 ~HTMLの部分置き換えスクリプトの巻~



