博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gcd(辗转相除法)
阅读量:6969 次
发布时间:2019-06-27

本文共 543 字,大约阅读时间需要 1 分钟。

证明过程:
  
假设用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

你可能感兴趣的文章
tp5 加载 extend 类库的方法 (有命名空间和没有命名空间的调用)
查看>>
运营一款电视盒子需要注意什么?
查看>>
网络协议 9 - TCP(下)
查看>>
js中的模块化——commonjs,AMD,CMD,UMD,ES6
查看>>
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
查看>>
Linux telnet命令
查看>>
用过的一些Markdown编辑器
查看>>
【刷算法】LeetCode.326-3的幂
查看>>
追踪解析Spring ioc启动源码(3)
查看>>
学习区块链中的主要问答
查看>>
5步告诉你QQ音乐的完美音质是怎么来的,播放器的秘密都在这里
查看>>
VisualVm利用SSL连接JMX的方法
查看>>
Linux docker-compose 实战
查看>>
Python--Redis实战:第四章:数据安全与性能保障:第6节:Redis事务
查看>>
Redis中使用Lua的一些优化和注意事项
查看>>
elk 第二篇 , 为elk加入redis, 替换下beats
查看>>
javescript经验文档(Array篇)
查看>>
react-native-camera 遇坑笔记
查看>>
8102 年的现代 Web 开发最佳实践(笑)
查看>>
谈谈React中Diff算法的策略及实现
查看>>