- ベストアンサー
100未満の素数を表示する方法
- 0~99までの配列を用意し、100の平方根である10までの素数の倍数を素数でない数としていく。
- 2の倍数、3の倍数、5の倍数、7の倍数を表示し消去する方法を教えてください。
- 100未満の素数を出力するプログラムのコード
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ヒント1 2以外の2の倍数を100まで表示 for ( i = 2; i * 2 <= 100; i++) { printf("%d ", i * 2); } ヒント2 消去というか0を代入 prime[2以外の2の倍数] = 0;
その他の回答 (3)
- asuncion
- ベストアンサー率33% (2127/6289)
>あとfor()のあとは{がつくと思うんですが、↑の場合 必ずしもそうではありません。 for文やif文では、 for (~) { /* 何かの文 */ } の「何かの文」が1個だけのとき、下記のように { と } を省略できます。 for (~) /* 何かの文(1個だけ) */
- okormazd
- ベストアンサー率50% (1224/2412)
たとえば、 #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; }
- himajin100000
- ベストアンサー率54% (1660/3060)
http://ideone.com/qfDx3 定番、エラトステネスの篩…だけど。 なんか綺麗じゃなくて納得行かないorz #自分が組みたいときは、リスト使うだろうからね
補足
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; これが繰り返しされるってことでいいんですか?