C语言编程中,输入三个正整数,求其最大公约数和最小公倍数的一种方法是:
定义一个函数,用辗转相除法求两个正整数的最大公约数。
定义另一个函数,用两个正整数的乘积除以它们的最大公约数得到最小公倍数。
在主函数中,从键盘输入三个正整数 a、b、c,并调用上述两个函数分别求出 a 和 b 的最大公约数和最小公倍数。
再用 a 和 b 的最小公倍数与 c 求出三个正整数的最小公倍数,并用 a 和 b 的最大公约数与 c 求出三个正整数的最大公约数。
//求两个正整数的最大公约数int gcd(int x, int y){ int r; while(y > 0)
{
r = x % y;
x = y;
y = r;
} return x;
}//求两个正整数的最小公倍数int lcm(int x, int y){ return x * y / gcd(x, y);
}//主函数#include
int g1, g2; //最大公约数
int l1, l2; //最小公倍数
printf("请输入三个正整数:\n"); scanf("%d%d%d", &a, &b, &c);
g1 = gcd(a, b); //求a和b的最大公约数
l1 = lcm(a, b); //求a和b的最小公倍数
g2 = gcd(g1, c); //求三个正整数的最大公约数
l2 = lcm(l1, c); //求三个正整数的最小公倍数
printf("三个正整数的最大公约数是:%d\n", g2); printf("三个正整数的最小公倍数是:%d\n", l2); return 0;
}
#include
int main()
{
int x, y, z, i, j;
scanf_s("%d%d%d", &x, &y, &z);
for (i = x; i > 0; i--)
{
if (x % i == 0 && y % i == 0 && z % i == 0)
break;
}
for (j = x; ; j++)
{
if (j % x == 0 && j % y == 0 && j % z == 0)
break;
}
printf("%d %d", i, j);
return 0;
}