摘要:
求最大公约数的Euclid算法需要用到大量的取模运算,这在大多数计算机上是一项复杂的工作,相比之下减法运算、测试数的奇偶性、折半运算的执行速度都要更快些。二进制最大公约数算法避免了Euclid算法的取余数过程。二进制最大公约数基于下述事实:若a、b都是偶数,则gcd(a,b)=2*gcd(a/2,b/2)若a是奇数、b是偶数,则gcd(a,b)=gcd(a/2,b/2)若a、b都是奇数,则gcd(a,b)=gcd((a-b)/2,b)因此可写出二进制最大公约数算法如下(C语言版): 1 int gcd(int a,int b){ 2 int c=1; 3 while(a-b){... 阅读全文
posted @ 2012-01-18 14:16
狼の禅
阅读(1131)
评论(0)
推荐(1)