初歩的な質問ですが、お願いします。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
asdfg

初歩的な質問ですが、お願いします。

#1

投稿記事 by asdfg » 15年前

最大公約数を求める問題なのですが、よくわからないところがあります。
#include <stdio.h>

int main(void) {
	int n1, n2, i, gcd = 1;
	
         puts("整数2つ入力");
	printf("1つ目:");	scanf("%d", &n1);
	printf("2つ目:");	scanf("%d", &n2);
	
	i = 1;
	
	while (i <= n1 && i <= n2) {
		if (n1 % i == 0 && n2 % i == 0) {
			gcd *= i;
			n1 /= i;
			n2 /= i;
			i = ●;
		} else {
			i++;
		}
	}
	printf("gcd = %d\n", gcd);
	
	return 0;
}
というプログラムで、●に適切な"数値"を入れよという問題なんですが、何をいれればよいのでしょうか。
i+1はだめで、数値じゃないとだめらしいです。

もともとの問題は何個か穴埋めの問題があって、ここの部分以外は解けました。

よろしくお願いします。

Poco

Re:初歩的な質問ですが、お願いします。

#2

投稿記事 by Poco » 15年前

もともとの問題文の穴はここだけですか?
while文の前のi = 1;も穴じゃありませんでした?

asdfg

Re:初歩的な質問ですが、お願いします。

#3

投稿記事 by asdfg » 15年前

そうです。穴でした。
この●以外の部分の答えはあり、自分の解答と同じになったので、
●の部分以外の穴は埋めておきました。

●の部分に入る数値はありますか?
ここに数値を入れると、最大公約数は求められないと思うのですが・・・
ミス問でしょうか?

Poco

Re:初歩的な質問ですが、お願いします。

#4

投稿記事 by Poco » 15年前

いえ、だとすればi=1も間違っています。
1でもプログラムの動作としては問題ないのですが、
考え方が間違っています。

これってwhile文で素因数分解やっているんですよ。
素因数分解を行うときに、機械的に解くにはどうすればいいか
考えればおのずと答えは見えてくると思います。

ためしにn1=8、n2=12辺りで紙の上で動作を追っていけば答えはすぐに
見つかりますよ。

non

Re:初歩的な質問ですが、お願いします。

#5

投稿記事 by non » 15年前

そうですねぇ。答えがわからないですね。
i=2で動くには動くのですが、ない方がいいですね。

Poco

Re:初歩的な質問ですが、お願いします。

#6

投稿記事 by Poco » 15年前

> そうですねぇ。答えがわからないですね。
> i=2で動くには動くのですが、ない方がいいですね。
>

ああ、互いに素の場合を失念してました。
i=1で良いです。すみません。

asdfg

Re:初歩的な質問ですが、お願いします。

#7

投稿記事 by asdfg » 15年前

回答有難うございます。

確かに●に入れる数値は2ですね。

これが素因数分解のプログラムということが理解できていませんでした。

あと、while文の前のi=1;の部分は、i=2;のほうがいいですね。

もともとの問題はこうでした。一応載せておきます。(●は適切な語句、★は適切な数値)
#include <stdio.h>

int main(void) {
	int n1, n2, i, gcd = 1;
	
         puts("整数2つ入力");
	printf("1つ目:");	scanf("●", ●n1);
	printf("2つ目:");	scanf("●", ●n2);
	
	i = ★;
	
	while (i <= n1 && i <= n2) {
		if (n1 % i == 0 ● n2 % i == 0) {
			gcd *= i;
			n1 /= i;
			n2 /= i;
			i = ★;
		} else {
			●;
		}
	}
	printf("gcd = %d\n", gcd);
	
	return 0;
}

non

Re:初歩的な質問ですが、お願いします。

#8

投稿記事 by non » 15年前

後ろのi = ★;
は、先生のミスか、わざとでしょう。

asdfg

Re:初歩的な質問ですが、お願いします。

#9

投稿記事 by asdfg » 15年前

解決し忘れてました。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る