求最大公约数的方法:辗转相除法,过程如下
1、当a%b == 0,那么a与b的最大公约数就是b。
2、当a%b != 0,那么有tmp = a%b; a = b; b = tmp。
求最大公倍数的方法:两数相乘除以它们的最大公约数。
代码如下(VS2015)
#include "stdafx.h"
//最大公约数
int greatestCommonDivisor(int a, int b) {
int tmp;
if (b == 0)
return b;
while ((tmp = a%b) != 0) {
a = b;
b = tmp;
}
return b;
}
//最大公倍数
int leastCommonMultiple(int a, int b) {
if (b == 0)
return b;
return (a*b) / greatestCommonDivisor(a,b);
}
int main()
{
int gcd = greatestCommonDivisor(12,10);
int lcm = leastCommonMultiple(12,10);
printf("12 10 :\n");
printf("gcd: %d, lcm: %d\n",gcd,lcm);
getchar();
return 0;
}
测试结果如下
好像这个问题经常会被问道,这里简单记录一下。:)