欧几里德算法及拓展
发布日期:2021-06-29 11:13:48
浏览次数:2
分类:技术文章
本文共 634 字,大约阅读时间需要 2 分钟。
1、欧几里德算法(辗转相除)求两个数的最大公约数
例如:求a, b的最大公约数即gcd(a, b) 当b != 0时, b = a%b, a = b,继续gcd(a, b) 当b == 0时,此时的a就是a,b的最大公约数
代码递归实现:
int gcd(int a, int b) { return b ? gcd(b, a%b) : a;}
代码循环实现:
int gcd(int a, int b) { int temp; while (b) { temp = a; a = b; b = temp%b; } return a;}
2、欧几里德的拓展
我们知道,在数学中,对于任意两个正整数a和b,必定存在一对整数s、t使得sa+tb = gcd(a,b)void exgcd(int a, int b, int * s, int * t) { if (b == 0) { *s = 1, *t = 0; }else { int next_s, next_t; exgcd(b, a%b, &next_s, &next_t); *s = next_t, *t = next_s - a/b * next_t; }}
当b == 0时可取s = 1, t = 0; 当b != 0时s = next_t, s = next_s - a/b * next_t(即s,t与下一层的s, t存在的关系);
转载地址:https://blog.csdn.net/ZWHSOUL/article/details/79217074 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年05月01日 05时11分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Scala
2019-04-29
面试被问delete后有必要加 limit么 ?
2019-04-29
2021!再见,分布式事务!
2019-04-29
面试官邪魅一笑: 你说说 Java8 的 ConcurrentHashMap ?
2019-04-29
万字详解!Git 入门最佳实践
2019-04-29
我在哥大读博的五年,万字总结
2019-04-29
B站up主用AI还原李焕英 动态影像
2019-04-29
用自己训练的 AI 玩王者荣耀是什么体验?
2019-04-29
Java 8 开发的 4 大顶级技巧,你都知道吗 ?
2019-04-29
这个B站up主太硬核了!纯手工打造AI小电视:硬件自己焊接,驱动代码全手写...
2019-04-29
有技术,没在怕,就是干!
2019-04-29
就你赚的那点钱,我们家哪里有能力请护工?
2019-04-29
一个员工的离职成本到底有多恐怖!
2019-04-29
Python利用OpenCV去除图片水印
2019-04-29
漫话:如何给女票解释华为鸿蒙OS是怎样牛逼实现跨平台的?
2019-04-29
细聊一下我面试Java开发人员的3条面试标准
2019-04-29
python爬虫实战:利用scrapy,短短50行代码下载整站短视频
2019-04-29