重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

10~50までの素数が格納されている配列を
rubyで作りたいのですが、どのようにすればいいいのかよくわかりません。

下のプログラムにも間違いがあるかもしれませんので
もしありましたご指摘お願い致します。

for i=start i<=end i++;//iは割られる数
for(j=1;j<=i;j++){//jは割る数
if(i%j==0){
count++;
}
}
if(count==2){
System.out.println(i);
}

iをjで割っていき、余りが0になったらカウントを増やしていくプログラムです。
素数は1とその数字でしか割れないので、カウントは2になり、
それを配列に格納したいのですが、ここではただ表示するだけに留まってしまっています。
どなたかよろしくお願い致します。

A 回答 (3件)

なんかあっさりいって不安だなとおもってたら、0~2あたりで試した際にあっさりボロを出しました。


改訂させて下さい・・・

劣化版
http://ideone.com/rNHq2

標準添付ライブラリ(お勧め)
http://ideone.com/XIl4n

一応速度だけはマシみたいですけど・・・自分のはどんなバグが混じってるやらわかりません。
    • good
    • 0

数学素養が無くて突っ込んだ話は出来ないので、幾つか例だけ貼っておきます。




手続きでべた書き、負数等考慮せず
http://ideone.com/9Ih90

多少Rubyっぽく&ある程度工夫(負数、ルート)
http://ideone.com/ctJPo

素直にライブラリ利用
http://ideone.com/3N7Cp
    • good
    • 0

primeライブラリを使えば簡単です。



require 'prime'
Prime.each(50).to_a - Prime.each(10).to_a # => [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!