2011-01-23

ご指摘ありがとうございますRubyで解いてみた者

プログラミング初心者Rubyで解いてみたの者です

親切なトラックバック、指摘に感謝します。プログラム改良を思いついたのですが書き方がわからないので忘れないように書いておきます

上のプログラムでは素数か判定する数を既知の素数を格納した配列にある全ての素数で割ることで素数か判定していました

初心者としてはなかなかいアイディアと思っていたのですが、大幅に比較回数を減らせる方法があることに気がつきました

割る数と商は入れ替え可能なので、素数の2乗でできていて割られる数より大きくて最も小さい数の平方根素数までを

割る数として使えば事足りると気がついたのです。つまり113は11まで割って割れなければ素数として確定するという事です

私のプログラムだと、13から109までの素数ので割るという比較をしなくて良くなります

プログラムに落とし込むには配列内の全てに実行するsosuu_hairetu.each do |waru|を指定回数実行するという形に直す必要があります

array = [1,2,3,4,5,6,7,8,9]
n = 0
5.times do
   puts array[n]
   n = n + 1
end

の変形で作れそうですが、もっといいメソッドがあるような気もしますのでもっと勉強してから書こう思います。

記事への反応 -
  • とある大規模インフラの基幹システムなんだけど、納品して以来、誰にも原因が分からない不具合が続いていたのでした。よく品質保証部を通ったなと不思議に思ってるんですがね。 現...

    • こういう話を聞くたびに「俺を採用しろ」と思うが、 まあ年齢的な制限には引っ掛かっているか。

    • あー 関数の中に static 変数名 って書くとグローバル変数になるって 知らないで 書いていてバグ出した人を知っている。 見つけたときにキレそうになった。 ポジションにもよる...

      • 関数の中に static って書くとグローバル変数になるプログラミング言語を知らないので ぜひその言語を教えてください ついでにグローバル変数の定義を述べてください

        • 失礼 スコープグローバルではないので、グローバル変数というのは、語弊があるな。寿命が恒久の意味 お詫びのコード template<typename T> T * getT(){  static T globalMem;  return &globalMem;...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん