1. 程式人生 > >求兩個整數的最大公約數和最小公倍數(通過呼叫自定義函式實現)

求兩個整數的最大公約數和最小公倍數(通過呼叫自定義函式實現)

>#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int yue(int x, int y);
//int yue_2(int x, int y);
//int yue_3(int x, int y);

int main()
{	
	int bei(int x, int y);

	int a, b;
	int ys, bs;
	printf("請輸入兩個整數:\n");
	scanf("%d %d", &a, &b);
	ys = yue(a, b);
	bs = bei(a, b);
	printf("最大公約數為%d,最小公倍數為%d\n", ys, bs);
	return 0;


}

 /*****************簡便一點
int yue_2(int x, int y)
{
	int t, r;
	if (y > x)
	{
		t = x;
		x = y;
		y = t;
	}

	while (r = (x % y) )//這部分我通過中間變數m改變x,y的值,其實並不需要,因為原x值後面並不需要用到,直接覆蓋掉也是可以的
	{
		x = y;
		y = r;
	}
	return y;
}***************/

/***********用遞迴實現
int yue_3(int x, int y)
{
	int t;
	if (y > x)
	{
		t = x;
		x = y;
		y = t;
	}

	if (!(x % y))
		return y;
	return yue_3(y, x % y);
}************************/

int yue(int x, int y)
{
	int t,r,m;
	if (y > x)
	{
		t = x;
		x = y;
		y = t;
	}
	r = x%y;
	while (r!=0)
	{
		m = y;
		y = r;
		x = m;
		r = x%y;
	}
	return y;

}

int bei(int x, int y)
{
	return (x*y / yue(x,y) );
}