输入两个正整数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版权协议,转载请附上原文出处链接和本声明。