c语言编程求三个数的最大公约数和最小数

简单明了点
2025-02-24 02:19:18
推荐回答(2个)
回答1:

#include  int gcd(int u, int v) /* 用辗转相除法求两个数的最大公约数 */{  int t;  while (v != 0)  {    t = u % v;    u = v;    v = t;  }  return u;} int lcm(int u, int v) /* 两个数的最小公倍数是两数之积除以最大公约数*/{  return u / gcd(u, v) * v;} int min(int u, int v) /* 求两个数中较小的一个数 */{  return u < v ? u : v;} void main(){  int a, b, c;  printf("Enter 3 integers:\n");  scanf("%d%d%d", &a, &b, &c); /* 输入三个整数 */  printf("Their GCD = %d\n", gcd(gcd(a, b), c)); /* 三个数的最大公约数 */  printf("Their LCM = %d\n", lcm(lcm(a, b), c)); /* 三个数的最小公倍数 */  printf("Their Min = %d\n", min(min(a, b), c)); /* 三个数中最小的数 */} 注:看题目,感觉有可能要的不是最小数,而是最小公倍数。所以两个都做了,请自行删除不需要的部分。如果程序中有不明白的地方,欢迎追问。

回答2:

#include

int lcm(int a,int b)
{
int temp , sum = 0;
if( a < b)
{
temp = a;
a = b ;
b = temp;
}
sum = a;
while(a%b!=0)
{
a+=sum;
}
return a;
}

main()
{
int num1 , num2 ,k;
system("cls");
printf("Input num1 and num2 \n");
scanf("%d%d" , &num1 , &num2);
k = lcm(num1 , num2);
printf("\n%d",lcm(num1 , num2));
}