如果我们要计算两个数的最小公倍数的话,假设这个两个数为a,b,并且,a=k1*n,b=k2*n。期中n为这个两个数的最大公约数,那么,这个两个数的最小公倍数可以变成这两个数相乘然后除以最小公约数。也就是:
result=a*b/n;
那么最大公约数这么求勒?
用辗转相除法发,假设这个两个数为8 6 。那么用大的数除以小的数,将余数和两个数中小的这个作为新的待求对象。也就是 6 8%6 ,故 6 2 然后继续。 2 0 。当小的数变成0的时候,那么另外一个非零的就是最大公约数:
代码:
//返回最大公约数
int gdb(int a,int b)
{
//确保 a>b
if (b > a)
{
int temp = a;
a = b;
b = temp;
}
while (b>0)
{
int temp = a % b;
a = b;
b = temp;
}
return a;
}