ページ 11

初心者なんですが質問です

Posted: 2017年7月03日(月) 15:54
by mook
c言語の3つの自然数a,b,cの最大公約数を考えたとき、aとbの最大公約数をdとするならば、cとdの最大公約数がa.b,cの最大公約数となる。以下のプログラムを利用してキーボードから入力した3つの自然数の最大公約数を表示するプログラムをおしえてください
以下のプログラムのmain関数内だけを修正で作成お願いします
#include <stdio.h>

int gcd(int a,int b){
int r;
r = a % b;
while(r!=0){
a = b;
b = r;
r = a % b;
}
return b;
}

void main(void)
{

int a, b,tmp;

printf("2つの自然数を入力してください。\n");
printf("1つ目の自然数 = ");
scanf("%d", &a);
printf("2つ目の自然数 = ");
scanf("%d", &b);

if(a<b){
tmp = a;
a = b;
b = tmp;
}
printf("最大公約数は%dです\n", gcd(a, b));
}

Re: 初心者なんですが質問です

Posted: 2017年7月04日(火) 16:00
by ガーナゴールドラッシュ
そこまで出来ているのなら、そのまま問題文の通りに作れば良いだけだと思いましたけど。

コード:

#include <stdio.h>

int gcd(int a,int b){
	int r;
	r = a % b;
	while(r!=0){
		a = b;
		b = r;
		r = a % b;
	}
	return b;
}

void main(void){
	int a,b,c,d,tmp;
	
	printf("2つの自然数を入力してください。\n");
	printf("1つ目の自然数 = ");
	scanf("%d", &a);
	printf("2つ目の自然数 = ");
	scanf("%d", &b);
	printf("3つ目の自然数 = ");
	scanf("%d", &c);
	
	if(a<b){
		tmp = a;
		a = b;
		b = tmp;
	}
	
	d=gcd(a,b);
	
	if(c<d){
		tmp = c;
		c = d;
		d = tmp;
	}
	
	printf("最大公約数は%dです\n",gcd(c,d));
}