从键盘输入两个正整数 a 和 b,求其最大公约数和最小公倍数。
算法思想:
利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。
#include <stdio.h>
//求最小公倍数
int _lcm(int a, int b) {
int lcm;
if (a > b)
lcm = a;
else
lcm = b;
while (lcm % a || lcm % b)
lcm++;
return lcm;
}
//求最大公约数
int _gcd(int a, int b) {
int gcd;
if (a > b)
gcd = b;
else
gcd = a;
while (a % gcd || b % gcd)
gcd--;
return gcd;
}
int main(void) {
int x, y;
printf("请输入两个数:");
scanf("%d%d", &x, &y);
printf("最小公倍数:%d\n", _lcm(x, y));
printf("最大公约数:%d\n", _gcd(x, y));
return 0;
}
输出结果:
请输入两个数:16 72
最小公倍数:144
最大公约数:8
技术要点:
实例中用到了辗转相除法来求最大公约数。在求最小公倍数时要清楚最大公约数和最小公倍数的关系,即两数相乘的积除以这两个数的最大公约数就是最小公倍数。