(一)欧几里得算法又称辗转相除法,是求解两个数的最大公约数的算法,基本定义为:
设 a=qb+r,其中a,b,q,r都是整数,则:gcd(a,b)= gcd(b,r)
利用递归实现该算法:
long long gcd(int a,int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
辗转相除法的应用:(水题)
nefu 116:两仪剑法 http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=116
题目分析:
由题意知:该题是要求M和N的最小公倍数,由于数据较大,正常用会导致数据溢出而WA,所以要利用该求最小公倍数的公式变形,先去除,再去乘,来进行数据范围的控制,公式为: