最大公约数和最小公倍数

时间:2023-01-14 00:30:04
/*
原理:公约数指的是能够整除两个数字的一个数字。那么公约数一定能被这两个数字的差整除。既然能被差整除,那就能被这个差和最小的那个数字整除,就这么反复的应用。 
因为辗转法,得到最后的余数一定为0,即有一个数会整除他们两个数  
而最先得到余数0的约数就是他们的最大公约数了
*/
#include"stdio.h"
int main()
{
int m,n,t,h,a,b,q;
printf("输入m,n的值:");
scanf("%d %d",&m,&n);
a=m;        //暂存两个数,将这两个数的原始值保存下来 
b=n;
if (n>m)   //判断这两个数的大小,将大的那个数放在前面 
{
t=m;
m=n;
n=t; //交换值 
}
while (m%n!=0) // 重复执行while循环,直到余数为0 

h=n;
n=m%n; //找到余数为0之前那个最小的余数 
m=n;
}
a=a/n;
b=b/n;
q=a*b*n;
printf("两数最大公约数为 %d,最小公倍数为 %d\n",n,q);
}