- 締切済み
素数の個数を求めるプログラミング
javaでプログラミングを学んでいるのですが 10000から20000までの整数のうち素数の個数を求めるプログラミングを製作しているのですがうまくいきません。 反復判定でwhileを使うと思うのですが・・・ 詳しいかた 正しいソースをお教えください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- d-mme
- ベストアンサー率100% (2/2)
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); } } } } 検証をしていないので、正しいかはわかりませんが、 これでどうでしょうか?
- rinkun
- ベストアンサー率44% (706/1571)
こういう問題だとエラトステネスの篩を使う方が良いかと。 # 参考 http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/ErSieve.html # エラトステネスの篩を扱うページは他にも多数あるが # ここはBASICだけどコードがあるので参考になるだろう これなら二重forループでも組める。20000までだったら141までの数でチェックすれば十分。 これで20000までの素数を求めて、後は10000~20000の素数の数をカウントすれば良い。カウントもforループで組めるね。
- FEX2053
- ベストアンサー率37% (7991/21371)
コードを書くと答えになってしまうのでヒントだけ。 その数自身未満の数から順にmod=0になるまで割り、 "1"ならば素数と判断できます。 後はこいつを10000-20000の間ループさせるだけです。 ・・・do-whileは2重になるんじゃないかと。
補足
回答ありがとうございます。 二重になるとは分かっているのですがwhile文の二重だと思っていましたが。 do-whileということは後判定型の反復処理ということですね・・・ すみませんもう少しだけヒントいただけませんか??