欧几里得算法模板
来源:互联网 发布:淘宝新上的宝贝找不到 编辑:程序博客网 时间:2024/06/06 04:47
一、公式
gcd(a,b) = gcd(b,a mod b)
二、证明
第一步:令c为a和b的最大公约数,数学符号表示为c=gcd(a,b).因为任何两个实数的最大公约数c一定是存在的,也就是说必然存在两个数k1,k2使得a=k1.c, b=k2.c
第二步:a mod (b)等价于存在整数r,k3使得余数r=a – k3.b.
即r = a – k3.b
= k1.c – k3.k2.c
= (k1 – k3.k2).c
显然,a和b的余数r是最大公因数c的倍数!
三、代码:
(一)递归
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
(二)循环
int gcd(int big, int small){ if (small > big) swap(big, small); int temp; while (small != 0){ // 辗转相除法 if (small > big) swap(big, small); temp = big % small; big = small; small = temp; } return(big);}
阅读全文
0 0
- 欧几里得, 扩展欧几里得算法模板
- 欧几里得算法 模板
- 欧几里得算法 模板
- 拓展欧几里得算法模板
- 欧几里得算法模板
- 欧几里得算法与扩展欧几里得算法模板
- 扩展欧几里得算法(模板)
- [模板] 扩展欧几里得算法详解
- 【模板】【数论】扩展欧几里得算法
- 扩展欧几里得算法模板题 zoj 3609
- 【扩展欧几里得算法】HDU1576A/B【模板】
- 数学(扩展欧几里得算法)经典模板
- 扩展欧几里得算法——模板整理
- 欧几里得模板
- extendGcd,即扩展欧几里得算法的C++模板化解释
- (模板题)poj 2115 C Looooops(扩展欧几里得算法)
- 欧几里得+扩展欧几里得(转载、模板)
- 欧几里得模板以及扩展欧几里得
- 6行代码将图片显示到MFC图像控件上
- Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
- java免费视频
- 电梯调度的C语言实现(vc可正常运行)
- Unity16--背景滚动的设置、第一人称视角
- 欧几里得算法模板
- 数据结构图之java实现
- NOIP2009Hankson的趣味题
- 正则表达式
- Elasticsearch 插入索引文档 和特殊的字段类型
- [java]插入排序及折半插入排序
- aidl原理解析
- Python 中文编码
- Java -2