ダディクールがC/C++の宿題を片づけます 32代目
169 :
デフォルトの名無しさん:
キーボードから入力された整数n(n>=3)が素数であるかを調べるプログラム。
判定方法は2からn-1までのすべての整数で割り算した結果、割り切れるものが1つもなければ
素数である。
{実行例}
n=7
素数。
n=12
素数ではない
>>169 判定方法まで教えてもらってそれ以上何を教えればいいのかわからん・・・。
171 :
デフォルトの名無しさん:04/10/14 12:24:18
そこをなんとか
おだまる!
>>169 やっほー、麻衣子だよ!
お兄ちゃんの宿題解いてあげるよ!
#include <stdio.h>
int main()
int n,pr;
do{
scanf("%d\n",&n);
}while(n<3);
for(pr=2;pr<n;pr++)
while(n/pr)n/=pr;
printf(n?"素数ではありません\n":"素数でーす\n");
return 0;
}
n-1までの全ての整数で割らなくても、それまでに判明した全ての素数で割るだけでよい。
>C/C++の宿題を片づけます
あれ?おっかしーなあ
何度見てもスレタイは宿題を片付けると書いてあるよ・・・
なのに既に別の意味で二人斬り
176 :
デフォルトの名無しさん:04/10/14 12:32:51
>>173 ありがとうございました!
すごいです!!
177 :
デフォルトの名無しさん:04/10/14 12:34:16
現バージョンでは、旧形式の関数定義は対応していませんってでたよ
えへへ、しっぱいしちゃった!
#include <stdio.h>
int main()
{
int n,m,pr;
do{
scanf("%d",&n);
}while(n<3);
m=n;
for(pr=2;pr<n;pr++)
while(m%pr==0)m/=pr;
printf((m==n)?"素数でーす\n":"素数ではありません\n");
return 0;
}
#include<stdio.h>
main()
{
intn,
i;
charstr[100];
do {
printf("かまん>>");
sscanf(str, "%s", fgets(str, 100, stdin));
n = atoi(str);
puts("");
} while(n <= 2);
for(i = 2; i < (n / 2); i ++) {
if(n % i == 0) {
break;
}
}
printf("n = %d\n%s\n", n, n % i ? "素数" : "素数じゃない");
return 0;
}
ごめんこれが俺のせいいっぱいだ
まちがってるかm
181 :
デフォルトの名無しさん:04/10/14 12:44:47
doってなんですか?使わずにできませんか?
何回もごめんね麻衣子ばかだから
m=1;
for(pr=2;pr<n;pr++)
if(n%pr==0){m=0;break;}
printf(m?"素数でーす\n":"素数ではありません\n");
sscanf(str, "%s", fgets(str, 100, stdin));
???
ワラタ
あぼーん
キニシナイキニシナイ
>>180 sscanf(str, "%s", fgets(str, 100, stdin));
何の意味も無いことするな。エラーでぬるぽだ。
すぐ下で
n = atoi(str);
やってるんだから
fgets(str, 100, stdin);
で充分
入力時のスペース類を消したくて書いた。
まさかぬるぽだと思わなかった。
今ではガッしている。
つーか、sscanfで読み取り元と格納先が同じって大丈夫だっけか
ヘルプひくのマンドクセ
この宿題をお願いします↓
まず,ファイルにデータの個数nと,その個数分のデータ(整数データ)を保存する.
プログラムshell.cは,まずファイルからnを読み込み,その数だけデータを読み込み,シェルソートを実行する.そして最後にソート結果を表示する.ただし,シェルソートのhの系列として,
hm=1,
hk-1=3hk+1, k=m,m-1,...
とし,nを超える直前にh1となるように mを定めるものとする.
データ例↓
10
6
4
1
2
7
5
0
9
8
3
ちなみにC++です。
fgets(str,sizeof(str),stdin);
num=atoi(str);
定石なりよ
>>192 fgets使っておきながらatoi使うのは愚の骨頂
普通は以下の感じかな。
if(fgets(str, sizeof(str), stdin) == NULL) {エラー処理}
if(sscanf(str, "%d", &num) != 1) {エラー処理}
※2つの変数に入れるなら != 2
atoi使うなら、以下の感じかな。結果は同じだけど、
改行かなんかがひとつ余分についているから、取った方がいいらしい。
if(fgets(str, sizeof(str), stdin) != NULL) {エラー処理}
if(sscanf(str, "%s", str2) != 1) {エラー処理}
num = atoi(str2);
>>194 2つ目のfgetsの戻り値のチェックが逆です。すまそ。
196 :
通りすがり@Cで。。:04/10/14 18:13:33
円周率小数表示すると 3.1415926…となるが、小数第 500位までに
各数字が何回登場するのかを表示するプログラムを作成せよ。
例:小数第 7位までなら
1… 2回 2… 1回 3… 1回 4… 1回 5… 1回 6… 1回 9… 1回。
>>196 πはどこから持ってくる?それの計算まで含むのか?
198 :
通りすがり@Cで。。:04/10/14 18:18:28
…で、
結果は各数字の登場回数がはぼ等しくなるのだと。。
不思議だよねぇ(・.・;)。二重レススマソデス
できた。
どうもありがと