个人学习笔记平台,欢迎大家交流

红叶~

Be humble, communicate clearly, and respect others.

辗转相减法

辗转相减法

1、理论依据

gcd(a,b)=gcd(b,ab)

辗转相除法的证明


2、应用
用来求若干个形如(pq)ri最大公约数:其中

  • pq不是次幂的形式
  • p、q、ri均为正整数
  • 辗转相减法
int gcd(int a, int b) {
int(a == b) return a;
return a > b ? gcd(b,a-b) : gcd(a, b-a);
}

3、算法推导
我们要求求若干个形如(pq)ri最大公约数,即求指数的最大公约数,
f(px,py)=p(x,y)=p(y,xy))=f(py,p(xy))=f(py,pxpy)
注意 x 要大于 y

int gcd_sub(int a,int b) {
if(a < b) swap(a,b);
if(b == 1) return a;
return gcd_sub(b, a/b);
}

数论例题:最大比例

posted @   红叶~  阅读(721)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示