C语言实现 输入两个正整数m和n,求其最大公约数和最小公倍数【学习笔记】

输入两个正整数m和n,求其最大公约数和最小公倍数

求最大公约数(可以同时整除):一共总结了两种方法求最大公约数,如下。
求最小公倍数 :等与 m*n/最大公倍数
方法一: ①最大公约数不会超过最小数 ②逐步减一,直到可以同时整除m和n

int main()
{
	int m=0;int n=0;
	int min; //最小公倍数
	scanf("%d,%d",&m,&n);
	
	int max = m<n?m:n; //最大公约数不会超过最小数,所以假设就是m和n中的最小值
	while(1)
	{
		if(m%max==0 && n%max==0)
		{
			break; //max为最大公约数,退出while循环
		}
		max--;
	}
	min = m*n/max;
	printf("最大公约数为:%d\n最小公倍数为:%d\n",max,min);
	return 0;
}

方法二: 辗转相除法求最大公约数 t=m%n 若t!=0,则m=n;n=t;m%n=t; 直到t=0,n为最大公约数。
注意: 此方法不用判断m和n的大小。

int main()
{
	int m=0;int n=0;int t;
	int min; //最小公倍数
	scanf("%d,%d",&m,&n);
	min = m*n;
	while(t=m%n)
	{
		m=n;
		n=t;
	}
	min/=n;//n为最大公约数
	printf("最大公约数为:%d\n最小公倍数为:%d\n",n,min);
	return 0;
}

版权声明:本文为qq_44097331原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。