ダディクールがC/C++の宿題を片づけます 32代目

このエントリーをはてなブックマークに追加
169デフォルトの名無しさん
キーボードから入力された整数n(n>=3)が素数であるかを調べるプログラム。
判定方法は2からn-1までのすべての整数で割り算した結果、割り切れるものが1つもなければ
素数である。
{実行例}
n=7
素数。
n=12
素数ではない
170デフォルトの名無しさん:04/10/14 12:21:10
>>169
判定方法まで教えてもらってそれ以上何を教えればいいのかわからん・・・。
171デフォルトの名無しさん:04/10/14 12:24:18
そこをなんとか
172デフォルトの名無しさん:04/10/14 12:25:25
おだまる!
173麻衣子 ◆K96Jk4jthA :04/10/14 12:28:05
>>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;
}
174デフォルトの名無しさん:04/10/14 12:29:41
n-1までの全ての整数で割らなくても、それまでに判明した全ての素数で割るだけでよい。
175デフォルトの名無しさん:04/10/14 12:30:19
>C/C++の宿題を片づけます
あれ?おっかしーなあ
何度見てもスレタイは宿題を片付けると書いてあるよ・・・
なのに既に別の意味で二人斬り
176デフォルトの名無しさん:04/10/14 12:32:51
>>173
ありがとうございました!
すごいです!!
177デフォルトの名無しさん:04/10/14 12:34:16
現バージョンでは、旧形式の関数定義は対応していませんってでたよ
178デフォルトの名無しさん:04/10/14 12:36:53
>>176
ちょっとまて
179麻衣子 ◆K96Jk4jthA :04/10/14 12:42:04
えへへ、しっぱいしちゃった!

#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;
}
180デフォルトの名無しさん:04/10/14 12:43:03
#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ってなんですか?使わずにできませんか?
182麻衣子 ◆K96Jk4jthA :04/10/14 12:44:51
何回もごめんね麻衣子ばかだから

m=1;
for(pr=2;pr<n;pr++)
if(n%pr==0){m=0;break;}
printf(m?"素数でーす\n":"素数ではありません\n");
183デフォルトの名無しさん:04/10/14 12:48:58
>>181
(゚Д゚ )ハァ?
184デフォルトの名無しさん:04/10/14 12:49:38
sscanf(str, "%s", fgets(str, 100, stdin));

???
185デフォルトの名無しさん:04/10/14 12:52:37
ワラタ
186あぼーん:あぼーん
あぼーん
187趣味プログラマ@180:04/10/14 12:53:38
キニシナイキニシナイ
188デフォルトの名無しさん:04/10/14 13:01:29
>>180
sscanf(str, "%s", fgets(str, 100, stdin));
何の意味も無いことするな。エラーでぬるぽだ。

すぐ下で
n = atoi(str);
やってるんだから
fgets(str, 100, stdin);
で充分
189180:04/10/14 13:08:33
入力時のスペース類を消したくて書いた。
まさかぬるぽだと思わなかった。
今ではガッしている。
190デフォルトの名無しさん:04/10/14 13:13:28
つーか、sscanfで読み取り元と格納先が同じって大丈夫だっけか
ヘルプひくのマンドクセ
191デフォルトの名無しさん:04/10/14 13:13:34
この宿題をお願いします↓
まず,ファイルにデータの個数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++です。
192コロ介 ◆YHMuLkVo/c :04/10/14 15:48:52
fgets(str,sizeof(str),stdin);
num=atoi(str);
定石なりよ
193デフォルトの名無しさん:04/10/14 16:01:38
>>192
fgets使っておきながらatoi使うのは愚の骨頂
194デフォルトの名無しさん:04/10/14 16:29:11
普通は以下の感じかな。
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);
195194:04/10/14 16:30:57
>>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回。
197デフォルトの名無しさん:04/10/14 18:18:23
>>196
πはどこから持ってくる?それの計算まで含むのか?
198通りすがり@Cで。。:04/10/14 18:18:28
…で、
結果は各数字の登場回数がはぼ等しくなるのだと。。
不思議だよねぇ(・.・;)。二重レススマソデス
199169:04/10/14 18:19:07
できた。
どうもありがと