`
coolsooner
  • 浏览: 1323192 次
文章分类
社区版块
存档分类
最新评论

二进制最大公约数算法

 
阅读更多

求最大公约数的Euclid算法需要用到大量的取模运算,这在大多数计算机上是一项复杂的工作,相比之下减法运算、测试数的奇偶性、折半运算的执行速度都要更快些。

二进制最大公约数算法避免了Euclid算法的取余数过程。

二进制最大公约数基于下述事实:

  1. 若a、b都是偶数,则gcd(a,b)=2*gcd(a/2,b/2)
  2. 若a是奇数、b是偶数,则gcd(a,b)=gcd(a/2,b/2)
  3. 若a、b都是奇数,则gcd(a,b)=gcd((a-b)/2,b)

因此可写出二进制最大公约数算法如下(C语言版):

或者

分享到:
评论

相关推荐

    二进制最大公约数,第 1 部分:该程序使用二进制 gcd 算法找到最大公约数-matlab开发

    该程序使用二进制 gcd 算法找到最大公约数,如 Menezes、van Oorschot 和 Vanstone 的《应用密码学手册》中所述。

    二进制最大公约数,第 2 部分:该程序使用二进制 gcd 算法找到 gcd,如 https://www.di-mgt.com.au/euclidean.html#code-binarygcd-matlab开发

    该程序使用二进制 gcd 算法找到最大公约数,如https://www.di-mgt.com.au/euclidean.html#code-binarygcd

    C#,最大公约数(GCD)斯坦因(Stein)算法的源代码

    Stein 算法或二进制 GCD 算法是计算两个非负整数的最大公约数的算法。 Stein 的算法用算术移位、比较和减法代替除法。Stein算法是一种计算两个数最大公约数的算法,是针对欧几里德算法在对大整数进行运算时,需要试...

    c++简单习题求两个整数的最大公约数和最小公倍

    1. 求两个整数的最大公约数和最小公倍数。 2. 输入一个int型数,将它的低四位(右四位)都置为1(低四位按二进制考虑)。 3. 鸡兔共有35只,脚共有1000只,编程计算鸡兔各有多少只。 <br>4. 编程求满足下列...

    算法设计与分析基础习题参考答案.doc

    gcd算法是用于计算两个正整数的最大公约数的算法。该算法的基本思想是使用欧几里得算法,通过不断地除法和取余数,直到余数为0时,得到的商就是最大公约数。例如,gcd(m,n)=gcd(n,m mod n),其中m mod n是m除以n的...

    ACM 算法经典代码 数据结构经典代码

    6. 最大公约数欧拉函数 8 二.图论_匹配 9 1. 二分图最大匹配(hungary邻接表形式) 9 2. 二分图最大匹配(hungary邻接表形式,邻接阵接口) 10 3. 二分图最大匹配(hungary邻接阵形式) 10 4. 二分图最大匹配(hungary正向...

    算法设计与分析基础课后习题答案(中文版).doc

    欧几里得算法是一种计算最大公约数的算法。该算法可以用来计算两个正整数的最大公约数。例如,计算gcd(5,8)。在欧几里得算法中,如果m,则交换m和n,否则,计算m mod n,并将其作为新的m和n。重复这个过程,直到m=0...

    python 实现 数学中经典问题 课程设计 代码

    递归伽马函数,高斯函数,高斯误差线性单元,N个数的最大公约数,最大公约数,贪婪找零,汉明数,Hardy-Ramanujan算法,六边形数,辛普森近似法求积分,判断IPv4地址是否有效,判断是否为平方数,Jaccard相似度,喬...

    C++数学与算法之初等数论

    欧几里德算法:欧几里德算法又称辗转相除法,用于求解两个正整数a、b的最大公约数,扩展欧几里得算法算法可用于RSA加密等领域。欧几里德算法的基本思路是:假如需要求2022和2003两个正整数的最大公约数,其流程如下...

    ACM常用算法介绍及模板.pdf

    最大公约数和最小公倍数是数学问题中的一种常见问题,需要使用欧几里德算法或辗转相除法来计算最大公约数和最小公倍数。 9. 组合序列 组合序列是指将一个序列中的元素排列成不同的顺序,例如将一个数组中的元素...

    易语言经典算法

    十进制转为二进制 九连环 找窃贼 哥德巴赫猜想 最小生成数 农夫过河 旅游最省钱路径 马克思手稿中的数学题 上楼梯(递归).e 上楼梯(非递归) 金额大小写转换 求一元二次方程的根(二分法) 数字与IP地址间的转换 八皇后...

    数据结构与算法_leetcode_lintcode题解.pdf

    * 最大公约数:最大公约数是一种数学运算,通过找到两个数的最大公约数来计算它们的最小公倍数。 * 素数筛选:素数筛选是一种数学运算,通过对一个范围内的所有数字进行筛选来找到所有素数。 其他 * 位操作:位...

    acm常用代码及算法

    最大公约数、最小公倍数 8.组合序列 9.快速傅立叶变换(FFT) 10.Ronberg算法计算积分 11.行列式计算 12.求排列组合数 字符串处理: 1.字符串替换 2.字符串查找 3.字符串截取 ...

    一种改进的RSA加密算法设计与实现_杨德山借鉴.pdf

    在RSA算法中,所涉及的运算都是大数运算,包括大数的赋值、加减、移位、清零等基本运算,以及建立在大数基本运算基础上的乘除、取模、模幂、求最大公约数、乘法逆元等运算。 2.1 指数运算的改进 在普通模幂和...

    所有算法均以C#实现。-.NET开发

    概述算法数据压缩Huffman压缩机Shannon-Fano压缩机编码器Caesar Vigenere Hill背包问题朴素求解器动态规划求解器数值分解LU最大公约数欧几里德GCD二进制GCD分解试验除法高斯-约旦消除搜索A-星二进制线性快速搜索...

    ACM函数整理_ACM模板.pdf

    7.最大公约数、最小公倍数 8.组合序列 9.快速傅立叶变换(FFT 10.Ronberg 算法计算积分 11.行列式计算 12.求排列组合数 13.求某一天星期几 14.卡特兰(Catalan) 数列原理 15.杨辉三角 16.全排列 17.匈牙利算法----...

    2022年浙江省计算机二级C语言上机题库.doc

    该题库共分为十三个部分,涵盖了C语言程序设计的多个方面,包括数列求和、最大公约数、最小公倍数、排序算法、数组、字符串处理、数制转换、斐波那契数列、水仙花、完数、回文数与亲密数、方程求根、回文数、因子、...

    c++实验5.doc

    我们使用了欧几里德算法来计算最大公约数。以下是计算最大公约数的代码: ```c int p, q, m, n, t, r; cout 请输入 p,q 两个数:" ; cin >> p >> q; m = p; n = q; if (p ) { t = p; p = q; q = t; } r = p % q;...

Global site tag (gtag.js) - Google Analytics