裴蜀定理和扩展欧几里得定理

news/2024/12/27 15:50:12/

文章目录

  • 裴蜀定理
    • 什么是裴蜀定理
    • 裴蜀定理证明如下
    • 例题
      • 思路
      • 代码
  • 扩展欧几里得
    • 什么是扩展欧几里得定理
    • 扩展欧几里得证明如下
    • 模板
      • 例题
      • 思路
      • 代码

裴蜀定理

什么是裴蜀定理

若a,b为整数,且gcd(a,b)=d,那么对于任意的整数 x,y,ax + by 都一定是d的倍数,特别地,一定存在整数x,y,使 a x + b y = d成立。

裴蜀定理证明如下

在这里插入图片描述

例题

题目链接
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ebcf6720b29a402691e5487adcec1c5c.png

思路

这个题我们可以把A看作系数,把X看作未知量,我们要求S最小正整数解,根据裴蜀定理可得,当S=gcd( A 1 A_1 A1, A 2 A_2 A2, A 3 A_3 A3,… A n A_n An)

代码

signed main()
{IOSint T=1;//cin>>T;while(T--){int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int t=a[1];for(int i=1;i<=n;i++){t=__gcd(t,abs(a[i]));}cout<<t<<endl;}return 0;
}

扩展欧几里得

什么是扩展欧几里得定理

扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展。已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),
使它们满足贝祖等式 ax + by = gcd(a,b)(裴蜀定理)
如果a是负数,可以把问题转化成|a|(-x)+by = gcd(|a|,b) ,然后令x’=(-x)。
通常谈到最大公约数时,我们都会提到一个非常基本的事实:给予二个整数a、b,必存在整数x、y使得ax + by = gcd(a,b)。
有两个数a,b,对它们进行辗转相除法,可得它们的最大公约数——这是众所周知的。然后,收集辗转相除法中产生的式子,倒回去,可以得到ax+by=gcd(a,b)的整数解。
扩展欧几里得算法可以用来计算模反元素(也叫模逆元),而模反元素在RSA加密算法中有举足轻重的地位。

扩展欧几里得证明如下

在这里插入图片描述

模板

#include <bits/stdc++.h>
#define lowbit(x) ((x)&(-x))
#define int long long
#define endl '\n'
#define PII pair<int,int> 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int exgcd(int a,int b,int &x,int &y)
{if(b==0){x=1,y=0;return a;}int x1,y1,d;d=exgcd(b,a%b,x1,y1);x=y1,y=x1-a/b*y1;return d;
}
signed main()
{IOSint T=1;//cin>>T;while(T--){int x,y;int t=exgcd(8,6,x,y);cout<<x<<" "<<y<<endl;}return 0;
}

例题

题目链接
在这里插入图片描述

思路

可以把同余方程转换成不定方程,用扩展欧几里得算法求出x,再判断x是否为最小正整数解就行了

代码

int exgcd(int a,int b,int &x,int &y)
{if(b==0){x=1,y=0;return a;}int x1,y1,d;d=exgcd(b,a%b,x1,y1);x=y1,y=x1-a/b*y1;return d;
}
signed main()
{IOSint T=1;//cin>>T;while(T--){int x,y,a,b,t;cin>>a>>b;int d=exgcd(a,b,x,y);int q=(x % b + b) % b;;cout<<q<<endl;}return 0;
}

http://www.ppmy.cn/news/1558563.html

相关文章

sql-DQL(持续更新中...)

完整执行顺序总结 FROM&#xff1a;选择数据源并应用连接。WHERE&#xff1a;过滤记录。GROUP BY&#xff1a;分组数据。HAVING&#xff1a;过滤分组结果。SELECT&#xff1a;提取所需列并计算表达式。ORDER BY&#xff1a;对结果排序。LIMIT / OFFSET&#xff1a;限制返回记录…

第二章 并行为什么有时会慢?

第2章 2.1 速度的障碍 我们把计算实体称为进程&#xff0c;比如snow包中的worker。 并行计算中主要有两个性能相关的问题&#xff1a; 通信开销 负载平衡 2.2 性能和硬件结构 多处理器系统 就像它的名字所说一样&#xff0c;有两个或多个处理器&#xff0c; 例如&#xff…

3D架构图软件 iCraft Editor 正式发布 @icraftplayer-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生

介绍 icraft/player-react 是 iCraft Editor 全新推出的 React 组件库&#xff0c;专为简化3D数字孪生场景的前端集成而设计。通过该组件&#xff0c;开发者可以轻松地将 iCraft Editor 制作的3D场景无缝嵌入到 React 项目中&#xff0c;并获得丰富的交互能力和实时数据集成特…

Ubuntu系统部署Mysql8.0后设置不区分大小写

部署MySQL # 更新系统软件包列表 sudo apt update# 安装MySQL Server sudo apt install mysql-server# 在安装时&#xff0c;系统会自动进行初始化&#xff0c;安装完成后MySQL已经处于运行状态# MySQL常见命令 #启动MySQL sudo systemctl start mysql#停止MySQL sudo systemc…

车载网关性能 --- 缓存buffer划分要求

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

springboot489基于springboot的七彩云南文化旅游网站的设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装七彩云南文化旅游网站软件来发挥其高效地信息处理的作用&am…

YOLOv10改进,YOLOv10添加Hyper-YOLO的MANet混合聚合网络

摘要 理论介绍 MANet 的目标是通过多种卷积操作的协同作用,提高特征提取能力,并加强梯度流动,从而提升模型在不同层次的特征表示和语义深度。MANet 结合了三种卷积变体,通过混合使用它们来提高视觉特征的多样性和信息流动性。 下图摘自论文: 理论详解可以参考链接:论文…

要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量

要查询 user 表中 we_chat_open_id 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_open_id IS NOT NULL AND we_chat_open_id ! ;解释&#xff1a; SELECT COUNT(*): 表示要计算符合条件的行数。FROM us…