您的位置:首页 > 其它

最大公约数和最小公倍数

2012-03-15 09:32 218 查看
/*
求最大公约数和最小公倍数的两种方法
最大公约数:辗转相除法、辗转相减法

最小公倍数 = m*n/最大公约数
*/
#include <stdio.h>
/*
辗转相除法:
1)a%b得余数c
2)若c=0,则b即为两数的最大公约数
3)若c!=0,则a=b,b=c,再回去执行(1)
*/
int gcd1(int a,int b)
{
while(b)
{
int c = a%b;
a = b;
b = c;
}

return a;
}
/*
辗转相减法
1)若a>b,则a=a-b	//辗转相除法是用一个数除另一个数取余数,不管大小
2)若a<b,则b=b-a	//但辗转相减法,每次都是用大的数减去小的数
3)若a=b,则a(或b)即为两数的最大公约数
4)若a!=b,则再回去执行(1)
*/
int gcd2(int a,int b)
{
while(a != b)
{
if (a > b)
{
a -= b;
}
else
{
b -= a;
}
}

return a;
}

int main()
{
int a,b;
while(scanf("%d%d", &a,&b) != EOF)
{
//测试辗转相除法
printf("The largest common divisor is:%d\n", gcd1(a,b));
//测试辗转相减法
printf("The least common multiple is:%d\n\n", a*b/gcd2(a,b));
}

return 0;
}

测试结果如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: