• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:100未満の素数を表示するには)

100未満の素数を表示する方法

このQ&Aのポイント
  • 0~99までの配列を用意し、100の平方根である10までの素数の倍数を素数でない数としていく。
  • 2の倍数、3の倍数、5の倍数、7の倍数を表示し消去する方法を教えてください。
  • 100未満の素数を出力するプログラムのコード

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

ヒント1 2以外の2の倍数を100まで表示 for ( i = 2; i * 2 <= 100; i++) { printf("%d ", i * 2); } ヒント2 消去というか0を代入 prime[2以外の2の倍数] = 0;

drite
質問者

補足

for (i=0;i<N;i++) prime[i]=1; //全ての要素を素数の候補とする prime[0]=prime[1]=0; //0と1は素数ではない このNは適当に変えていいってことですか? 宣言されてないですし…。 あとfor()のあとは{がつくと思うんですが、↑の場合 prime[i]=1; prime[0]=prime[1]=0; これが繰り返しされるってことでいいんですか?

その他の回答 (3)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

>あとfor()のあとは{がつくと思うんですが、↑の場合 必ずしもそうではありません。 for文やif文では、 for (~) { /* 何かの文 */ } の「何かの文」が1個だけのとき、下記のように { と } を省略できます。 for (~) /* 何かの文(1個だけ) */

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

たとえば、 #include<stdio.h> #include<math.h> int main() { int i,j,prime[100],N=100; for (i=0;i<N;i++) { prime[i]=i; //全ての要素を素数の候補とする } prime[0]=prime[1]=0; //0と1は素数ではない for(j=2;j<sqrt(N);j++){ //math.hを使わなければ、j<10か for(i=j+1;i<N;i++){ if(prime[i]%j==0){ if(prime[i]!=0) printf("%dの倍数 %d\n",j,prime[i]); //倍数の表示 prime[i]=0; } } } printf("\n%d未満の素数を出力\n",N); for (i=0;i<N;i++) { if(prime[i]!=0) printf(" %d\n",prime[i]); } return 0; }

回答No.2

http://ideone.com/qfDx3 定番、エラトステネスの篩…だけど。 なんか綺麗じゃなくて納得行かないorz #自分が組みたいときは、リスト使うだろうからね

関連するQ&A