证明过程:
假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, x%y)(y > 0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。
代码:
用辗转相除法求a b 最大公约数(a b谁大谁小无所谓):

int GCD( int a , int b )
{int n=a%b;whie(n != 0) //即: while(n)
    {a = b;b = n;n = a % b;}return b; //注意这里返回的是b 不是n
}

 递归版:

int gcd(int a,int b)
{if(b==0) return a;else return gcd(b,a%b);
}

转载于:https://www.cnblogs.com/KyleDeng/p/9276616.html

gcd(辗转相除法)相关推荐

  1. 【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)

    题干: 我们这样定义斐波那契数列,F[1]=1,F[2]=1,当n>2时F[n]=F[n-1]+F[n-2]. 斐波那契数列的前10项为:1,1,2,3,5,8,13,21,34,55. 欧几里 ...

  2. gcd,lcm,同余理论、二次剩余、二次非剩余、和n次剩余通俗意义的理解

    a=q * b=r 最大公约数gcd:辗转相除法,又称欧几里得算法,gcd(a,b)= gcd(b,r) = gcb(b,a mod b) 最小公倍数lcm: a * b/gcd(a,b) 判断一个数 ...

  3. 2017202110104-高级软件工程第二次作业个人项目之-四则运算生成程序

    GitHub项目地址 https://github.com/Cynnn/Arithmatic PSP2.1表格 PSP2.1 Personal Software Process Stages 预估耗时 ...

  4. noip2017考前基础复习——数论数学

    ·最大公约数 gcd 辗转相除法  gcd(a,b)=gcd(b,a%b) 1 int gcd(int x,int y){ 2 if(y==0) return x; 3 return gcd(y,x% ...

  5. C++常用函数(刷PAT甲级总结)

    判断素数 HDU1059 求一个数字的质因子之积时,只需要考虑小于等于根号n的质因子,但是最后剩下的可能还是个质数,所以要格外考虑下 bool isPrime(int x){if(x<=1)re ...

  6. 【保研复习】C语言保研机试笔记

    基于王道机试指南的保研机试笔记(C语言翻译版) 文章目录 技巧 C语言哈希表用法 C语言string.h函数 C语言math.h函数 数据结构 链表 基本实现 反转链表 栈 基本实现 括号匹配 表达式 ...

  7. BUU-ACM国庆新人欢乐赛题解

    A 模拟签到题 判断平年还是闰年,然后输出365.366即可. code #include <stdio.h> int main() {int x;scanf("%d" ...

  8. 最大公因数(Java)

    枚举 package wordhello; import java.util.Scanner; public class Wordhello { public static void main(Str ...

  9. 算法:“最大公约数” 和 “最小公倍数”

    最大公约数 Greatest Common Divisor(GCD) 辗转相除法求最大公约数(欧几里得算法) //求a和b的最大公约数 int gcd(int a, int b){return b== ...

最新文章

  1. 设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
  2. QT中关于ipv6和getaddressinfo的开关
  3. python中类的定义方法_在Python中定义类变量的正确方法
  4. 计算机用并行传输还是串行,网线RJ45是并行传输还是串行
  5. .NET | 多线程下的调用上下文 : CallContext
  6. AI助手智商测评Siri进步最大,无人驾驶打车服务已在美国试行
  7. [李景山php]每天TP5-20161225|thinkphp5-Console.php-2
  8. 系统架构变迁——个人成长路线
  9. 斐讯 N1 降级、刷机及 Armbian 安装 [2019.7.23]
  10. 常用USB芯片介绍(转串口、SPI 、单片机读写U盘)
  11. python预处理c语言_C语言预处理器
  12. matlab报错Unbalanced or unexpected parenthesis or bracket.
  13. Ubuntu+Windows双系统,开机默认启动项设置Windows优先
  14. Google 工程师二三事
  15. mysql怎么加快搜索_优化mysql数据库 提高检索速度
  16. Silverlight5正式候选版发布附下载地址(Silverlight 5.0 RC)
  17. windows10自带浏览器Microsoft Edge闪屏怎么解决
  18. LeaRun.net代码生成器 一键生成前后端代码
  19. 理想固网:IPPBX解决方案助力跨区企业资源整合
  20. 智慧工厂实施建设方案-数字化

热门文章

  1. Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。
  2. fpga该驱动器调试dev_dbg 无输出
  3. C#在WinForm中实现清空指定类型控件的内容
  4. 基于WebGL架构的3D可视化平台—三维设备管理(ThingJS实现楼宇设备管理3D可视化)...
  5. Bossy智能便贴:让工作更有效率
  6. 《Adobe Illustrator大师班:经典作品与完美技巧赏析》目录—导读
  7. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.8 创建数据库...
  8. 使用MDT2012部署WindowsLinux操作系统(8)
  9. QT中关于头文件一个很奇怪的问题
  10. WEB应用常见15种安全漏洞一览