プロが教えるわが家の防犯対策術!

javaでプログラミングを学んでいるのですが
10000から20000までの整数のうち素数の個数を求めるプログラミングを製作しているのですがうまくいきません。
反復判定でwhileを使うと思うのですが・・・

詳しいかた
正しいソースをお教えください。
よろしくお願いします。

A 回答 (3件)

int f_prim = 10000;


int e_prim = 20000;
int i, j;
for(i = f_prim; i <= e_prim; i++){
for(j = 2; j < i; j++){
if(i % j == 0){
break;
}
else{
if(j == i - 1){
System.out.println("素数:"+i);
}
}
}
}

検証をしていないので、正しいかはわかりませんが、
これでどうでしょうか?
    • good
    • 0

こういう問題だとエラトステネスの篩を使う方が良いかと。


# 参考 http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ …
# エラトステネスの篩を扱うページは他にも多数あるが
# ここはBASICだけどコードがあるので参考になるだろう

これなら二重forループでも組める。20000までだったら141までの数でチェックすれば十分。
これで20000までの素数を求めて、後は10000~20000の素数の数をカウントすれば良い。カウントもforループで組めるね。
    • good
    • 0

コードを書くと答えになってしまうのでヒントだけ。



その数自身未満の数から順にmod=0になるまで割り、
"1"ならば素数と判断できます。
後はこいつを10000-20000の間ループさせるだけです。

・・・do-whileは2重になるんじゃないかと。

この回答への補足

回答ありがとうございます。
二重になるとは分かっているのですがwhile文の二重だと思っていましたが。
do-whileということは後判定型の反復処理ということですね・・・
すみませんもう少しだけヒントいただけませんか??

補足日時:2008/01/18 13:47
    • good
    • 0

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