扩展欧几里得c++

扩展欧几里得c++

  • 裴蜀(贝祖)定理
  • 扩展欧几里得求解
  • 递归代码

裴蜀(贝祖)定理

  • 法国数学家艾蒂安·裴蜀,
  • 对任何整数a、b和它们的最大公约数d
  • 若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数
  • 一定存在整数x,y,使ax+by=d成立。

扩展欧几里得求解

  • 裴蜀定理得ax1 + by1 = gcd(a,b) 和 bx2+(a%b)y2 = gcd(b,a%b)
  • 欧几里得定理知:gcd(a,b) == gcd(b,a%b)。
  • 因而ax1 + by1=bx2+(a%b)y2
  • 模运算性质,有a%b = a - (a/b )* b
  • 右边=bx2 + [ a - (a/b) * b] y2
  • 即ax1 + by1==bx2 + [ a - (a/b) * b] y2=ay2 + b[ x2 - (a/b) y2];
  • 由a、b系数相等的关系得到x1 = y2,y1 = x2 - a/b*y2
  • 同理,将gcd(a%b,b%(a%b))进行求解,可得x2 = y3,y2 = x3 - a/b*y3
    ……
    由展转相除法知,最后得到gcd(t,0)
  • 即有txn + 0yn = gcd(t,0),则有xn=1,取yn=0,则为本方程的一组解。
  • 再往上逆推xn-1 = yn,yn-1 = xn - a/b*yn,得到xn-1 = 0,yn-1 =1,最后可求出x1 和y1

递归代码

#include<iostream> 
#include<cstring> 
using namespace std;
//ax+by=gcd(a,b)
int exgcd(int a,int b,int *x,int *y){if(b==0){*x=1;*y=0;	return a;}//	cout<<"记号"<<"*x:"<<*x<<"  *y:"<<*y<<endl;int r=exgcd(b,a%b,x,y);int t=*x;*x=*y;*y=t-a/b* *y;return r;
} 
int main(){int x,y;exgcd(97,127,&x,&y);cout<<x<<","<<y<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无人驾驶大热,新能源汽车智能化中的算网支持

来源新华社&#xff1a;百度“萝卜快跑”全无人驾驶汽车行驶在路上 当前&#xff0c;新能源汽车产业数智化已成为全球汽车产业数字化转型的焦点。一方面&#xff0c;随着人工智能、大数据、云计算等技术的深度融合&#xff0c;新能源汽车在自动驾驶、智能互联、能源管理等方面…

xmind梳理测试点,根据这些测试点去写测试用例

基本流&#xff08;冒烟用例必写&#xff09; 备选流 公共测试点&#xff1a;

Linux服务监控自动巡检脚本--推送钉钉告警

1. 编写服务监控自动巡检脚本 [rootlocalhost ~]# cat /opt/port_monitor_alarm_by_dingding.sh #!/bin/bash# 定义需要监控服务对应的端口列表 port_list"3308 1242 35690 65500 10410"# 定义接收通知的钉钉机器人的 Webhook URL webhook_url"https…

【题解】42. 接雨水(动态规划 预处理)

https://leetcode.cn/problems/trapping-rain-water/description/ class Solution { public:int trap(vector<int>& height) {int n height.size();// 预处理数组vector<int> lefts(n, 0);vector<int> rights(n, 0);// 预处理记录左侧最大值lefts[0] …

GuLi商城-商品服务-API-品牌管理-OSS前后联调测试上传

服务端签名直传 这种方式文件上传不用走自己的服务器了 zhouyimo.oss-cn-beijing.aliyuncs.com 后端启动: nacos: 虚拟机启动:里面mysql自动启动 前端项目启动:npm run dev 单文件上传和多文件上传地址都要改成自己的外网访问地址

文本语言的上升沿写法

通过两个上升沿来调用不用的程序 def trap1(): global stn1 stn1 True 将全局变量stn1置True def trap2(): global stn2 stn2 True 将全局变量stn2置True pre_sig get_standard_digital_out(0) pre_sig2 get_standard_digital_out(1) while True: sig get_standard_…

Android帧布局的概念与属性

帧布局&#xff08;FrameLayout&#xff09;顾名思义就是将控件一层一层叠在一起&#xff0c;像视频的帧一样&#xff0c;一层叠一层&#xff0c;如图所示&#xff0c;帧布局中BUTTON叠在ImageView之上。帧布局常见的属性见表1。帧布局中的控件可以使用android:layout_gravity&…

c语言alpha-beta剪枝六子棋

c语言Alpha-Beta剪枝算法六子棋[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2i5w8kc1-1720756528545)(https://i-blog.csdnimg.cn/direct/464b9db7d6384a63ab8c3213efff0e99.png)] 1.介绍 Alpha-Beta剪枝算法是一种用于优化博弈树搜索的算法&…

Minio搭建文件服务器的学习

MinIO是一个高性能的开源对象存储服务器&#xff0c;与Amazon S3兼容。它使用Go语言编写&#xff0c;可以在多种操作系统上运行&#xff0c;如Linux、MacOS和Windows等。MinIO的分布式特性使其能够轻松扩展存储容量和处理能力&#xff0c;满足大规模数据存储的需求。 使用Docke…

展望未来:在【PyCharm】中结合【机器学习】实现高效的图形化处理

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言一、PyCharm简介与配置1.1 PyCharm基础1.2 图形化库配置 二、机器学习项目中的数据可视化2.1 数据加载与预处理2.2 数据探索性可视化2.3 模型训练与结果可视化 三、PyCharm中的图形化调试四、高级…

setContentView 流程

setContentView 流程 Activity -> setContentView 开发者设置入口PhoneWindow -> setContentView mWindow 在 attach 时初始化为 PhoneWindow&#xff0c;同时PhoneWindow也是Window唯一的实现类PhoneWindow -> installDecor 这一步的作用是 初始化DecorView, 把Deco…

leetcode704.二分查找

给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解释: 9 出现…

JAVASE 重点基础语法 - JAVA基础知识点复习(1)

目录 一&#xff0c;关键字 定义&#xff1a;被JAVA语言赋予了特殊的含义&#xff0c;来用来做专门用途的单词 关键字分类&#xff1a; 1&#xff0c;用于定义数据类型的关键字 2,用于定义流程控制的关键字 3,用于定义访问权限修饰符的关键字 4&#xff0c;用于定义类&am…

C++从入门到起飞之——缺省参数/函数重载/引用全方位剖析!

目录 1.缺省参数 2. 函数重载 3.引⽤ 3.1 引⽤的概念和定义 3.2 引⽤的特性 3.3 引⽤的使⽤ 3.4 const引⽤ 3.5 指针和引⽤的关系 4.完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ C从入门到起飞 个人格言&#xff1a;悟已往之不谏…

MySQL学习笔记 下

MySQL学习笔记&#xff08;需接上篇&#xff09; 1. 通配符 用于替换字符串中的一个或多个字符&#xff1b;通配符常与LIKE关键字一起使用&#xff0c;用于搜索字段中的指定模式&#xff1b; 2. 别名 用于为表或表中的列提供临时名称&#xff1b; 别名用于为表或表中的字段…

【安装记录】:安装破解 ideaIU-2024.1.4

1、官网下载安装包&#xff1a; https://www.jetbrains.com/idea/download/?sectionwindows 2、按照下图操作&#xff1a; 然后&#xff0c;自定义重启即可 3、破解参考这篇文章&#xff1a;https://www.exception.site/article/1727

qt 自定义抽象类简单举例

在Qt中自定义一个抽象类通常涉及定义一个基类&#xff0c;该类包含至少一个纯虚函数&#xff0c;从而使其成为抽象类。以下是一个简单的例子&#xff0c;展示了如何创建一个自定义的抽象类及其派生类。 首先&#xff0c;我们定义一个名为Shape的抽象类&#xff0c;它有一个纯虚…

win10 A4000 下使用Xinference来进行大模型的推理测试

创建环境 conda remove --name xinference --all conda create --name xinference python3.10 conda activate xinference 安装&#xff1a; conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia pip install tiktoken sentence-transformer…

【QT】窗口MainWindow

目录 窗口的组成 菜单栏 图形化创建菜单栏 代码创建菜单栏 给菜单设置快捷键 添加子菜单 添加分割线 添加图标 创建menuBar的细节 工具栏 设置工具栏出现的初始位置&#xff08;上下左右&#xff09; 设置工具栏允许停靠的位置 设置不允许浮动 设置不允许移动…

提高使用安全,智慧校园在线用户功能概述

智慧校园系统融入了一个查看当前在线用户的功能&#xff0c;这一设计旨在为管理人员提供一个实时的窗口&#xff0c;洞悉校园平台的即时活跃情况&#xff0c;确保系统的高效运作与环境安全。通过这一功能&#xff0c;管理员能够一目了然地看到所有正活跃在平台上的用户群体&…