---恢复内容开始---

记a, b的最大公约数为gcd(a, b)。显然, gcd(a,b)=gcd(|a|,|b|).

计算最大公约数的Euclid算法基于下面定理:

  【GCD递归定理】对于任意非负整数a和任意正整数b,gcd(a,b)=gcd(b,a%b)。

=============================================================

  gcd(a,b)=gcd(b, a+kb) a,b,k为任意整数
  即gcd(a,b)=gcd(b, a mod b) a≥0,b>0
  Example:gcd(55,22)=gcd(22, 55mod22)=gcd(22,11)=11
 
  证明:假定d=gcd(a,b),那么有d|a和d|b.对任何正整数b,a可表示为如下形式: a=kb+r ≡r mod b, a mod b =r , 因此,有(a mod b)= a-kb,k为某个整数。但由于d|b,b也能整除kb, 而d|a,故有d|(a mod b), 这表明d 也是b 和(amod b) 的公因子。由于这是可逆的,如果d 是b 和(a mod b) 的公因子,那么d|kb,且d|[kb+(a mod b)],这等同于d|a。这样a和b的公因子集合等同于b 和(a mod b) 的公因子集合。
==============================================================

Euclid算法最简单的递归版本如下:

 int Euclid(int a,int b)
{
b == ? return a : Enclid(b, a%b);
}

迭代版本:

---恢复内容结束---

最大公约数与欧几里得(Euclid)算法的更多相关文章

  1. 欧几里得算法/欧几里得扩展算法-python

    说在开头. 出于对欧几里得的尊重,先简单介(cou)绍(ge)一(zi)下(shu).. 欧几里得,古希腊人,数学家.他活跃于托勒密一世时期的亚历山大里亚,被称为“几何之父”. 他最著名的著作< ...

  2. 【codevs 1565】【SDOI 2011】计算器 快速幂+拓展欧几里得+BSGS算法

    BSGS算法是meet in the middle思想的一种应用,参考Yveh的博客我学会了BSGS的模版和hash表模板,,, 现在才会hash是不是太弱了,,, #include<cmath ...

  3. 刷题总结——(一道很妙的题)Resistance(ssoj 欧几里得 )

    题解: 题目背景 151006 T1 题目描述 Picks 喜欢电路.这天他在研究元电路的时候,需要一个阻值为 (p/q)Ω 的电阻,然而他家中只有一大堆电阻为 1Ω 电阻.由于技术问题,Picks  ...

  4. 2014年百度之星程序设计大赛 - 资格赛 1002 Disk Schedule(双调欧几里得旅行商问题)

    Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取.为了提高效率,须要人为安排磁盘读取.然而,在现实中,这样的做法非常复杂.我们考虑一个相对简单的场景.磁盘有 ...

  5. 欧几里得 &amp; 拓展欧几里得算法 解说 (Euclid &amp; Extend- Euclid Algorithm)

    欧几里得& 拓展欧几里得(Euclid & Extend-Euclid) 欧几里得算法(Euclid) 背景: 欧几里德算法又称辗转相除法.用于计算两个正整数a.b的最大公约数. -- ...

  6. 欧几里得(Euclid)与拓展的欧几里得算法

    欧几里得(Euclid)与拓展的欧几里得算法 欧几里得(Euclid)与拓展的欧几里得算法 欧几里得算法 原理 实现 拓展的欧几里得算法 原理 递归求解 迭代求解 欧几里得算法 原理 欧几里得算法是一 ...

  7. 算法:欧几里得求最大公约数(python版)

    #欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...

  8. Luogu P1290 欧几里得的游戏/UVA10368 Euclid's Game

    Luogu P1290 欧几里得的游戏/UVA10368 Euclid's Game 对于博弈论的题目没接触过多少,而这道又是比较经典的SG博弈,所以就只能自己来推关系-- 假设我们有两个数$m,n$ ...

  9. 【数学】【NOIp2012】同余方程 题解 以及 关于扩展欧几里得与同余方程

    什么是GCD? GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可).在开头,我们先下几个定义: ①a|b表示a能整除b(a是b的约数) ②a mod b表示a-[a/b]b([a/b]在Pa ...

随机推荐

  1. 发布代码小助手V2.1发布了——Code2HTML工具

    设计起源: 新浪博客似乎没有插入代码的功能,所以不得不用打空格的方法格式化代码.而且没法显示行号. 描述: 发布代码小助手用python和Tkinter开发,可以在任何常见操作系统上运行.主要用于在不 ...

  2. Poj 1953 World Cup Noise之解题报告

    World Cup Noise Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 16369   Accepted: 8095 ...

  3. 每天一个linux 命令:which

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  4. 【译】 AWK教程指南 3计算并打印文件中指定的字段数据

    awk 处理数据时,它会自动从数据文件中一次读取一条记录,并会将该记录切分成一个个的字段:程序中可使用 $1, $2,... 直接取得各个字段的内容.这个特色让使用者易于用 awk 编写 reform ...

  5. 恒天云IaaS基础设施标准

    系统总体要求: 支持多种操作系统:支持Windows,Redhat.Suse等Linux操作系统: 支持多种虚拟化系统:支持多种计算资源虚拟化方式: 网络接口:支持千兆及万兆以太网技术: 供电:支持直 ...

  6. Mac java环境配置

    进入命令行 cd ~ touch .bash_profile vi .bash_profile 输入内容jdk变量配置内容: export JAVA_HOME=/Library/Java/JavaVi ...

  7. HW6.29

    public class Solution { public static void main(String[] args) { int count = 0; int[] card = new int ...

  8. Spark的部署方式

    1.Spark的应用程序部署 2.Spark的集群部署

  9. 起底多线程同步锁(iOS)

    iOS/MacOS为多线程.共享内存(变量)提供了多种的同步解决方案(即同步锁),对于这些方案的比较,大都讨论了锁的用法以及锁操作的开销,然后就开销表现排个序.春哥以为,最优方案的选用还是看应用场景, ...

  10. .NET设计模式(3):抽象工厂模式(Abstract Factory)

    ):抽象工厂模式(Abstract Factory) 抽象工厂模式(Abstract Factory) --探索设计模式系列之三 Terrylee,2005年12月12日 转载:http://terr ...