字典翻译 问答 其它 欧几里德算法是什么啊?
问题标题:
欧几里德算法是什么啊?
问题描述:

欧几里德算法是什么啊?

李守志回答:
  欧几里德算法   欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理:   定理:gcd(a,b)=gcd(b,amodb)   证明:a可以表示成a=kb+r,则r=amodb   假设d是a,b的一个公约数,则有   d|a,d|b,而r=a-kb,因此d|r   因此d是(b,amodb)的公约数   假设d是(b,amodb)的公约数,则   d|b,d|r,但是a=kb+r   因此d也是(a,b)的公约数   因此(a,b)和(b,amodb)的公约数是一样的,其最大公约数也必然相等,得证.   欧几里德算法就是根据这个原理来做的,其算法用C++语言描述为:   voidswap(int&a,int&b)   {   intc=a;   a=b;   b=c;   }   intgcd(inta,intb)   {   if(0==a)   {   returnb;   }   if(0==b)   {   returna;   }   if(a>b)   {   swap(a,b);   }   intc;   for(c=a%b;c>0;c=a%b)   {   a=b;   b=c;   }   returnb;   }   参考资料:internet
点击显示
其它推荐
热门其它推荐
  • 其它