• ベストアンサー

C言語で

100までの素数を画面に全て表示するにはどうすればいいのでしょうか? まったく分からなくて困ってます 良ければ早めの回答お願いします 忙しいので、お礼は遅れるかもしれませんが、必ずします

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

まったくわからないといっても 「1から100までの『整数』を画面に全て表示する」 位のプログラムは書けませんか? これすらできないのなら、参考書等で一から勉強してください。 素数の前に「値が偶数だった表示、そうでないなら表示しない」と変更できますか? 「値 n が偶数」という判定は n % 2 == 0 でできます。 「値が素数だった表示、そうでないなら表示しない」と変更するなら、上記の「偶数だったら」という判定を「素数だったら」と変更します。 素数かどうかの判定は 「判定する値n を 2≦m<n の整数で割ったとき、割り切れるmが存在しない」 となります。 isPrime=1 ↓ 2≦m<nで、 n % m == 0 になったらisPrime=0にする ↓ ここに来た時点で isPrime==1なら素数 という流れです。 ※ 次の性質を使うと、2≦m<nの全てをチェックする必要は無い ・ 2以外の偶数は素数ではない ・奇数は偶数で割り切れない。 ・m*m≦n の範囲だけ確認すればよい : m * l = n , m≦l とすると、 m==l がmの最大値になり、これよりmが大きくなると、lが小さくなるため m>lとなりm≦lを満さなくなる 別解: 100までの整数を全て、と範囲が決まっている場合は「エラトステネスのふるい」というアルゴリズムが便利です。 プログラムも簡単です。 http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9 別解2: 計算して求めろ、とは書いてないので #include <stdio,h> int main(){ puts("2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97"); return 0; }

関連するQ&A

専門家に質問してみよう