明日までの提出とかなり切羽詰ってます><
プログラムは2〜100の範囲の自然数nを入力して2〜nの範囲の素数を
すべて表示させるというものです。範囲外なら再度入力もとめるようです。
primeなしです><
試し割り法ってので挑戦してみましたorz
#include <stdio.h>
void main()
{
int i,j,Num;
printf("2〜100の範囲の自然数を入力してください\n");
scanf("%d",&Num);
if(Num < 0 || Num > 100){
printf("範囲外です.再度入力してください.\n");
scanf("%d",&Num);
}
for(i = 3; i <= Num; i++){
for(j =2; j<i/2;j++){
if (i % j != 0){
printf("%d",i);
}}}}
こんなのうったらわけわかめのものがでてきました汗
よろしければ救済お願いしますorz
n以下の素数列挙
Re:n以下の素数列挙
http://www.tsg.ne.jp/TT/tsg/c/mansaku/P01.html
この辺参考になるでしょうか。
要は、「全部割れなかったら」素数なわけでして、一回の比較で割れなかったからと言って素数とは限りません。
例えば15は2では割れませんが、3では割り切れます。
において、breakが行われなかったかどうかは、for文を抜けた後に、iが②になっているかどうかでわかります。
for(i=0;i<10;i++)
でまわった時、最後までfor文が行われたら括弧から出た時、iは10になっています。
それまでに条件にマッチして抜けたのなら10にはなりません。
これを利用して全部割れなかったかどうか判断してください。
この辺参考になるでしょうか。
要は、「全部割れなかったら」素数なわけでして、一回の比較で割れなかったからと言って素数とは限りません。
例えば15は2では割れませんが、3では割り切れます。
for(j=① ; j<② ; j++){ if(条件)break; }
において、breakが行われなかったかどうかは、for文を抜けた後に、iが②になっているかどうかでわかります。
for(i=0;i<10;i++)
でまわった時、最後までfor文が行われたら括弧から出た時、iは10になっています。
それまでに条件にマッチして抜けたのなら10にはなりません。
これを利用して全部割れなかったかどうか判断してください。
Re:n以下の素数列挙
エラトステネスのふるいの方法ではこんな感じかな。
極力簡単に書いたつもりでは有るけど・・・
範囲外の処理は出来そうだったので(良くは見ていないが(^^;)
自分でくっつけてください。
極力簡単に書いたつもりでは有るけど・・・
#include <stdio.h> #define MAX 100 int main() { static char buff[MAX+1]; int i; buff[0] = buff[1] = 1; for (i = 2; i <= MAX; i++) { int j; for (j = i + i; j <= MAX; j += i) buff[j] = 1; } for (i = 0; i <= MAX; i++) if ( buff == 0) printf("%d\n",i); return 0; }
範囲外の処理は出来そうだったので(良くは見ていないが(^^;)
自分でくっつけてください。
Re:n以下の素数列挙
ありがとうございます。これで何とかのりきれます。ただ、見てもまったくわからないじぶんがorz
あとでがんばってみます><
forとわりざんのよじょうこう?%でがんばろうとしたんですがしっぱいしました
夜更けにありがとうございました。
あとでがんばってみます><
forとわりざんのよじょうこう?%でがんばろうとしたんですがしっぱいしました
夜更けにありがとうございました。
Re:n以下の素数列挙
昨日は1時位には寝てしまったので拝見できませんでした、今日提出だったのにすみません(_ _||)
breakはループ文から抜けるという意味です。
簡単な構文については、
「C言語 入門」 でググルと沢山参考になるサイトが出てきますので、そちらをご覧下さい。
仰るようにforとifだけで出来ますよ。breakは難しいものじゃないですし。
Hermitさんのコードもforとifだけですし、まぁ次の課題で頑張ってください^^;
breakはループ文から抜けるという意味です。
簡単な構文については、
「C言語 入門」 でググルと沢山参考になるサイトが出てきますので、そちらをご覧下さい。
仰るようにforとifだけで出来ますよ。breakは難しいものじゃないですし。
Hermitさんのコードもforとifだけですし、まぁ次の課題で頑張ってください^^;
Re:n以下の素数列挙
ホントはこれくらいにしたかったのだけど、
分かるかどうか不安だったので(^^;
<= MAX の部分も、 < sizeof buff の方が好きなんだが・・・変更しにくくなりそうなので。
分かるかどうか不安だったので(^^;
#include <stdio.h> #define MAX 100 int main() { static char buff[MAX+1]; int i; buff[0] = buff[1] = 1; for (i = 2; i <= MAX; i++) { int j; if (buff == 0) if ((j = i * i) <= MAX) do buff[j] = 1; while ((j += i) <= MAX); } for (i = 0; i <= MAX; i++) if ( buff == 0) printf("%d\n",i); return 0; }
<= MAX の部分も、 < sizeof buff の方が好きなんだが・・・変更しにくくなりそうなので。