• 締切済み

素数の個数を求めるプログラミング

javaでプログラミングを学んでいるのですが 10000から20000までの整数のうち素数の個数を求めるプログラミングを製作しているのですがうまくいきません。 反復判定でwhileを使うと思うのですが・・・ 詳しいかた 正しいソースをお教えください。 よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

  • d-mme
  • ベストアンサー率100% (2/2)
回答No.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); } } } } 検証をしていないので、正しいかはわかりませんが、 これでどうでしょうか?

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

こういう問題だとエラトステネスの篩を使う方が良いかと。 # 参考 http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/ErSieve.html # エラトステネスの篩を扱うページは他にも多数あるが # ここはBASICだけどコードがあるので参考になるだろう これなら二重forループでも組める。20000までだったら141までの数でチェックすれば十分。 これで20000までの素数を求めて、後は10000~20000の素数の数をカウントすれば良い。カウントもforループで組めるね。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

コードを書くと答えになってしまうのでヒントだけ。 その数自身未満の数から順にmod=0になるまで割り、 "1"ならば素数と判断できます。 後はこいつを10000-20000の間ループさせるだけです。 ・・・do-whileは2重になるんじゃないかと。

tukai555
質問者

補足

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

関連するQ&A

  • 不等式にあてはまる数の個数について教えてください

    こんにちは。 不等式にあてはまる数の個数の求め方について教えてください。 問題: 10 < x < 20 のとき、x にあてはまる数の「個数」を求めます。ただし、x は整数です。 答え: x にあてはまる数の個数は、9個 (11, 12, 13, 14, 15, 16, 17, 18, 19) です。 これを求める式は、「(20-10)+(-1) = 9 (個)」のはずです。 ・このとき、なぜ「-1」をするのか教えてください。 ・また、他の考え方があるときはその考え方を教えてください。 できたら、中学校卒業程度のレベルで教えていただけるとうれしいです。 よろしくお願いします。

  • JAVAのプログラミングです

    JAVAのプログラミングを教えてください 整数Xの十進表記を1桁右に循環的にシフトした(つまり、最右桁の数字を最左桁の位置に置く)数が、Xの2倍であるような整数Xのうち、最小のものを求めよ。 これをJAVAでプログラミングせよ。とのことです

    • ベストアンサー
    • Java
  • 整数の個数について

    整数の個数について 数学の問題集で『3桁の正の整数のうち、3で割ると1余る偶数の個数はいくつか』という問題の解説で、 『3で割ると1余る偶数は、6で割ると4余る数である』とあったのですが、 どう理屈でどう考えるとこれが導き出せるのかがわかりません。どのように考えればよいのでしょうか? 例えば、三桁の正の整数で、3で割り切れる数であり、かつ、偶数(2で割り切れる数)の個数、といった場合には、 3と2の最小公倍数である6の倍数で考えて個数を導けばよいとわかるのですが・・・。 自分でも調べてみて、3で割ると1余る→3X+1か3x-2で表せるなど色々考えてみたのですが、行き詰ってしまいました。 どうかご指南をよろしくおねがいします。

  • javaで公約数の個数を求めるプログラミング

    javaで二つの数字を入れるとその公約数と、その公約数の個数を表示してくれるプログラムを作りたいです。 公約数を表示してくれるプログラムは多分作れたのですが、公約数の個数を表示してくれるプログラムの作り方がどうしてもわかりません。 aを入力してください:12 bを入力してください:18 aとbは公約数として1をもちます。 aとbは公約数として2をもちます。 aとbは公約数として3をもちます。 aとbは公約数として6をもちます。 よって,aとbは公約数を4個もちます。 というように表示されるようにしたいです。 個数を求めるプログラムを教えてくださいm(_ _)m 以下が私の作った公約数を求めるプログラムです。 import java.util.Scanner; class Test{ public static void main(String args[]) { Scanner sc = new Scanner (System.in); System.out.println("aとbの各公約数と、その全体の個数を調べます。"); System.out.print("aを入力してください:"); int a=sc.nextInt(); System.out.print("bを入力してください:"); int b=sc.nextInt(); if(a<b){ for(int i=1;i<=a;i++) if((a%i==0)&&(b%i==0))System.out.println(a+"と"+b+"は公約数として"+i+""+"をもちます"); } if(b<a){ for(int i=1;i<=b;i++) if((a%i==0)&&(b%i==0))System.out.println(a+"と"+b+"は公約数として"+i+""+"をもちます"); } } }

    • ベストアンサー
    • Java
  • Javaと素数の判定について・・・

    Javaのプログラミングで、素数の判定をfor構文とif構文だけで、どうやったら作れるものでしょうか。教えてください。。

  • 素因数分解と約数の個数

    こんばんわ。早速ですが、質問に移らさせていただきます。 例えば、36=2の2乗×3の2乗、と素因数分解できます。このように、素数の積にする事により 約数の個数が解ります。この場合、 (指数+1)×(指数+1)が、約数の個数になります。 このような公式を学んだところなのですが、具体的な整数でいろいろと試してみましたが、なぜ、そのような公式になるのかが、検討もつきません。何か、手がかりがあれば、よろしくお願いいたします。

  • C言語/プログラミング

    整数を2つ入力して、2つの整数が割り切れるかどうか判定する。0除算の場合はメッセージ出すプログラミングを教えてください。

  • 解の個数

    解の個数 2x+3y=97の非負の整数解(x,y)はいくつ存在するか? 式を変形して y=-2/3x+97/3 97がおそらく素数なので、x,yが何の倍数になればなればよいのか分かりません。 (そもそも解のしぼり方も倍数から判定するのかも分かりません) 「グラフの形からx=1,2,3,,,48まで代入して調べる」以外の方法がありましたら教えてください。

  • Javaプログラミング

    Javaプログラミング 課題で10進法で入力した値を2進法に計算しなおすプログラミングを書いてます。Integer.toBinaryString(int)を使わないでと指定があるのですが、まったくわかりません。おそらくfor か while を使うのだろうと思うのですが、 わかるかたいましたら教えてください。 お願いします。

    • ベストアンサー
    • Java
  • 場合の数 個数の処理 わかんねぇです><;;

    こんばんは。 ここへの投稿は初めてなんですが いきなり聞きたい事があります。 私は高1で 今数学で 集合とか場合の数とか個数の処理とか やってるわけです。 それで、次の問題がどうしても分からないので、なるべく私でも分かるように説明して下されば有り難いです・・・! ・1から200までの整数の集合を全体集合とするとき、次の集合の要素の個数を求めよ。 「4で割り切れるが、6で割り切れない数の集合」 と、いうわけで自分で計算してみたんですが 4の倍数=A, 6の倍数=Bとして n(A)=50 n(B)=33 ここからが分からないんです。 4で割り切れるが、6で割り切れない・・とは AからAとBの共通の数を引けばいいのですか? そうすると50-8=42となるのですが その問題集の答えは34になると書かれてるんですよ。 どうしたら34になるのかサッパリなのですOTL もしや問題集の答えが間違っているとか・・・? ぜひ分かる人は教えて下さい。 お願いします。