满意答案

qsdk06615
2014.12.29

采纳率:52% 等级:8
已帮助:509人
#include
#include
int exhaustion(int a, int b) //采用穷举法计算最大公约数
{
int t = a;
if(b
t = b;
for(; t>0; t--)
{
if(a%t==0 && b%t==0)
break;
}
return t;
}
int Euclid(int a, int b) //采用欧几里得算法求最大公约数
{
int t;
while(b!=0)
{
t = b;
b = a % b;
a = t;
}
return a;
}
int rec_gcd(int a, int b) //采用递归算法求最大公约数
{
return b==0 ? a : rec_gcd(b, a%b);
}
int lcm_fun(int a, int b, int gcd) //求两个数的最小公倍数
{
int t = a * b / gcd;
return t;
}
int main()
{
int x, y;
int gcd, lcm;
printf("请输入两个数并回车,中间以空格隔开:\n");
scanf("%d %d", &x, &y);
gcd = exhaustion(x, y);
printf("采用穷举法计算的最大公约数为:%d\n", gcd);
gcd = Euclid(x, y);
printf("采用欧几里德算法计算的最大公约数为:%d\n", gcd);
gcd = rec_gcd(x, y);
printf("采用递归算法计算的最大公约数为:%d\n", gcd);
lcm = lcm_fun(x, y, gcd);
printf("两数的最小公倍数为:%d\n", lcm);
return 0;
}
01分享举报
本文展示了如何使用穷举法、欧几里得算法和递归算法来计算两个整数的最大公约数,并通过最大公约数求得它们的最小公倍数。在C语言中实现了这些算法,并在主函数中进行测试。
1万+

被折叠的 条评论
为什么被折叠?



