近来想重温了一遍算法书《算法设计与分析基础(第2版)》,从第一章第一个算法“欧几里德”开始写起,练习练习,如有错误请各位纠正~
int gcd1(int m, int n) //欧几里德
{
int iTemp = 0;
if (n < 0 || m < 0)
{
return -1;
}
else if (n == 0)
{
return m;
}
else
{
return gcd1(n, m % n); //递归
}
}
int gcd2(int m, int n) //连续整数
{
int iTemp;
for (iTemp = min(m, n); iTemp > 0; iTemp--)
{
if (!(m % iTemp) && !(n % iTemp))
{
return iTemp;
}
}
return -1;
}
欧几里德比连续整数检测真是快很多,遇到大数输入,就很容易看到差距了。