最大公约数:
第一种方法:
递归:
int gcd(int m, int n)
{
int temp;
if(m < n)//m less than n change
{
temp = m;
m = n;
n = temp;
}
if(m % n == 0)//eg. 9 3 de gcd is 3 because 9 % 3 == 0
return n;
else
return gcd(n,m%n);//欧几里得辗转相除法求最大公约数 gcd(m,n) == gcd(n,m%n) 递归可得
}
第二种方法:
循环:
int gcd2(int m, int n)
{
int temp, k;
if(m < n)//m less than n change
{
temp = m;
m = n;
n = temp;
}
if(m % n == 0)//eg. 9 3 de gcd is 3 because 9 % 3 == 0
return n;
while(m % n != 0)
{
k = m;//k 存一下m的值
m = n;//新的m 的值 为 n
n = k % n;//n 的值在这个表达式之前没变
if(m%n == 0)
return n;
}
}
最小公倍数:
最小公倍数为两个数之乘除于最大公约数
int gbs(int m, int n)
{
return m*n / gcd(m,n);
}