当前位置: 首页 > news >正文

【数论3】裴属定理与扩展欧几里得算法

前言

来咯来咯,今天的数论部分来了,今天比较水啊,因为课实在是比较多。

今天的数论部分是讲裴属定理扩展欧几里得算法,当然还有今天的题目(两道树状数组 + 一道连通块的问题)我放到下一篇了。


裴属定理

第一次听到这个定理的时候感觉压力好大,这个名字一看就知道不简单,但是学了之后才发现还挺简单的。

这个裴属定理主要是为了引出后面的扩展欧几里得算法的,所以大家有个印象就好了,不必较真。

话归正题,什么是裴属定理

裴属定理是这样的,对于任意的整数ab,必定存在一组整数xy,使得:

a * x + b * y = gcd(a, b)

老样子,先证明。

我们先证明必定存在一对xy(不一定是整数),使得a * x + b * y = gcd(a, b)

首先设d = gcd(a, b),那么da的约数d也是b的约数。

随后依据算数基本定理将dab展开,可以发现d是包含在ab中的,显然存在一组x, y使得

a * x + b * y = gcd(a, b)

那么如何证明x, y均为整数呢?这个主播是不会的哈,但是主播知道怎么求出xy。使用扩展欧几里得算法


欧几里得算法

在推导扩展欧几里得算法之前呢。我们先来复习一下欧几里得算法


代码

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

代码很简单对吧,当然思路也很简单,具体推导过程我就不讲了,感兴趣的小伙伴可以去看我前面的博客(数论2)


扩展欧几里得算法

随后我们来推导扩展欧几里得算法

首先来分析当b = 0时,x和y的值,设x * a + y * b = a,显然:x = 1y = 任意值,这也就代表着我们要求的x,y可能不止一对,为了方便讨论我们y = 0 啊。

随后我们来分析b不为0的情况。

因为是递归,所以我们假设已知b * y + (a % b)x = gcd(b, a % b)中的xy

我们知道:

a % b = a - [a/b] * b

a % b = r

r = a - [a/b] * b

r代入上式可得:

b * y + (a - [a/b] * b) * x = gcd(b, a % b)

随后我们提出b可得

b * (y - [a/b] * x) + a * x = gcd(b, a % b)

到此我们就得出来了xy的递推公式,是不是很简单?


代码

int gcd(int a, int b, int& x, int& y)
{
    if (b == 0)
    {
        x = 1, y = 0;
        return a;
    }
    int d = gcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}

相关文章:

  • naive_admin项目实战03 基于Go语言的后端
  • LearnOpenGL小练习(QOpenGLWidget版本)
  • 【杂谈】-大型语言模型对具身人工智能发展的推动与挑战
  • Apache Hive和Snowflake的`CREATE VIEW`语法和功能特性整理的对比表
  • 移动端六大语言速记:第5部分 - 面向对象编程(OOP)
  • 翻译: 人工智能如何让世界变得更美好三
  • 深入解析HTTP请求方法:Spring Boot实战与最佳实践
  • 【LeetCode 热题100】208:实现 Trie (前缀树)(详细解析)(Go语言版)
  • leetcode 53.Maximum Subarray
  • Docker学习--容器生命周期管理相关命令--run命令
  • Linux内核网络栈:数据发送流程解析
  • 每日壁纸更新 pc
  • 4.2 单相机引导机器人放料-仅考虑角度变化
  • FPGA实现4K MIPI视频解码H265压缩网络推流输出,基于IMX317+VCU架构,支持4K60帧,提供工程源码和技术支持
  • Unity启动画面去除教程:如何去除Unity的Splash Screen和水印
  • 嵌入式人工智能产品开发实战】(十八)—— 政安晨:小智AI的Websocket通信协议嵌入式终端代码解读
  • 《QDebug 2025年3月》
  • Qt中存储多规则形状图片
  • JAVA:利用 JSONPath 操作JSON数据的技术指南
  • 类的默认成员函数
  • 找人做网站要注意什么/推广联盟平台
  • 知名网站有哪些?/郑州网站制作推广公司
  • 惠州网站推广排名/手机版怎么用百度快照
  • 广州 骏域网站建设 陶瓷/墨子学院seo
  • 网站做的比较好的公司吗/培训心得简短200字
  • 手机端网站怎么做seo/搜索引擎优化seo