程序分析:
在数学中,两个数的最小公倍数=两个数的乘积/两数的最大公约数。
求两个数的最大公约数,运用辗转相除法:已知两个整数M和N,假定M>N,则求M%N。
如果余数为0,则N即为所求;如果余数不为0,用N除,再求其余数。。。直到余数为0,则除数就是M和N的最大公约数
代码:
#include
int gcd(int a, int b)/*求最大公约数*/
{
int r, t;
if(a
{
t = a;
a = b;
b = t;
}
r = a % b;
while(r != 0)/*辗转相除法*/
{
a = b;
b = r;
r = a % b;
}
return b;
}
int lcm(int a, int b)/*求最小公倍数*/
{
int r;
r = gcd(a, b);
return(a * b / r);
}
int main()
{
int x, y;
printf("请输入两个整数:\n");
scanf_s("%d %d", &x, &y);
printf("两个整数最大公约数为:%d\n", gcd(x, y));
printf("两个数最小公倍数为:%d\n", lcm(x, y));
return 0;
}