/*
C 练习实例16 - 最大公约数和最小公倍数
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:
(1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
(2)求最大公约数用辗转相除法(又名欧几里德算法)
*/
#include <stdio.h>
/*欧几里得算法:辗转求余
gcd(a,b) = gcd(b,a mod b)
b为0时,两数的最大公约数即为a
*/
int gcd(int a, int b)
{
int t;
if(b == 0)
{
t = a;
}
else
{
t = gcd(b, a % b);
}
return t;
}
/*最小公倍数*/
int lcm(int a, int b)
{
int t;
t = a * b /gcd(a, b);
return t;
}
int main()
{
int m, n;
printf("请输入两个整数(格式为3,4):");
scanf("%d,%d", &m, &n);
printf("最大公约数为%d\n", gcd(m, n));
printf("最小公倍数为%d\n",lcm(m, n));
return 0;
}
C 练习实例16 - 最大公约数和最小公倍数
最新推荐文章于 2020-10-29 18:39:06 发布