题目:求两个数的最大公约数
分析:
方法(1):辗转相除法
int gcb2(int m, int n)
{
int left = 0;
while (n)
{
left = m % n;
m = n;
n = left;
}
return m;//n等于0时,即m%n等于0,最大公约数是n,即m(里面赋值了)
}
方法(2):辗转相减法
int gcb3(int m, int n)
{
while (m != n)
{
if (m > n)
{
m = m - n;
}
else
{
n = n - m;
}
}
return m;
}
方法(3):枚举法(从最大的因子开始逐渐减1的试除法)
int gcb1(int m, int n)
{
int big = m;
int small = n;
if (n > m)
{
big = n;
small = m;
}
//big大,small小
for (int i = small; i > 0; i--)
{
if (m%i == 0 && n%i == 0)
{
return i;
}
}
}