原理:
1.m是正整数,r属于Zm,且gcd(r,m)=1,存在s属于Zm,使得rs=1(mod m)。则整数s称为r模整数m的乘法逆元。
2.对任意的两个整数a和b,总存在x和y使得gcd(a,b)=ax+by成立。
3.因为由1知,r和m互素,所以gcd(r,m)=1,则可以使用扩展欧几里得算法求得x和y,则等式ax+by=1成立。
步骤:
1.输入两个数a,b;a>=b;
2.若b=0,则d=a,x=1,y=0,返回(d,x,y);
3.设x2=1,x1=0,y2=0,y1=1;
4.当b>0时,
(1)q=[a/b],r=a-qb,x=x2-qx1,y=y2-qy1;
(2)a=b,b=r,x2=x1,x1=x,x2=1,y2=y1,y1=y;
5.d=a,x=x2,y=y2,返回(d,x,y);
则x为所求。

代码实现如下:

#include<stdio.h>
int main()
{
int d, x1, x2, y1, y2,q,r,x,y,a1,b1,a,b;
printf("请输入a和模m:");
scanf("%d,%d", &a, &b);
a1 = a, b1 = b;
if (a1 < b1)
{a1 = b1 + a1;b1 = a1 - b1; a1 = a1 - b1;}
if (b1 == 0) {d = a1, x = 1, y =0;printf("存在某个输入为0");return;
}
x2 = 1, x1 = 0, y2 = 0, y1 = 1;
while (b1 > 0) {q = a1 / b1;r = a1 - q*b1;//余数x = x2 - q * x1;y = y2 - q * y1;a1 = b1;b1 = r;x2 = x1;x1 = x;y2 = y1;y1 = y;}
d = a1, x = x2, y = y2;
printf("\n%d在mod%d下的逆元为%d\n",a,b,y);
system("pause");
return ;
}

利用扩展欧几里得算法编程求逆元相关推荐

  1. 扩展欧几里得算法(求逆元)

    扩展欧几里得算法(求逆元)总结 1.在RSA算法生成私钥的过程中涉及到了扩展欧几里得算法(简称exgcd),用来求解模的逆元. 2.首先引入逆元的概念: 逆元是模运算中的一个概念,我们通常说 A 是 ...

  2. 扩展欧几里得算法、乘法逆元与中国剩余定理

    文章目录 前言 定义.定理和部分证明 整除 定义 定理 定理的证明 同余 定义 同余的性质 同余的运算律 运算律的证明 扩展欧几里得算法 代码模板 算法详解 乘法逆元 求解逆元 乘法逆元的作用 中国剩 ...

  3. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...

    难度较高,阅读时间大概 28 分钟 这是数论的第二篇,在<素数筛法>中,我们重温了素数这个数学定义,并且给出了区别于教科书上更高效的 Eratosthenes 筛法和欧拉线性筛.这篇文会从 ...

  4. 如何利用扩展欧几里得算法求解不定方程_欧几里德算法、拓展欧几里德、中国剩余定理...

    01.欧几里德算法(Euclidean algorithm)(辗转相除法) 欧几里德算法又称辗转相除法,主要是用于计算两个整数a,b的最大公约数. 简单点说一下算法原理:两个整数的最大公约数等于其中小 ...

  5. 扩展欧几里得算法求逆元---乘法密码

    欧几里得算法 背景知识: 欧几里得算法:又叫做辗转相除法,用来求两个数的最大公约数.通过辗转相除,当余数为0的时候,最后的除数就是两个数的最大公约数. 例如:求20和11的最大公约数 每次将除数作为下 ...

  6. [BZOJ1477] 青蛙的约会|扩展欧几里得算法

    1477: 青蛙的约会 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 306  Solved: 192 [Submit][Status][Discuss ...

  7. 数学知识——扩展欧几里得算法

    一. 算法描述 欧几里得算法 我们先回忆一下欧几里得算法(辗转相除法): 这个很好证明: 首先,,. 1.现假设,那么,取,这样,所以a和b的约数是b和a mod b的约数. 2.现假设,那么,取,这 ...

  8. GCD LCM 欧几里得算法 扩展欧几里得算法

    欧几里得算法: 辗转相除法的关键恒等式:gcd(a,b)=gcd(b,a mod b); 边界条件:gcd(a,0)=a; //最大公约数 int gcd(int a,int b) {return b ...

  9. 表格法轻松理解扩展欧几里得算法以及利用其求乘法逆元

    文章目录 扩展欧几里得算法 求乘法逆元 扩展欧几里得算法 具体算法的原理参见扩展欧几里得算法求乘法逆元,本文仅以表格的形式展现计算过程,浅显易懂.下面通过例子进行说明. 例:求1234和4321的最大 ...

最新文章

  1. undefined symbol: sqlite3_open_v2
  2. 防止多重启动之调用Api [收集2005090201]
  3. python 打包exe_将python文件打包exe独立运行程序方法详解
  4. Python 之匿名函数和偏函数
  5. 【数学建模】基于matlab GUI干线交通控制方法【含Matlab源码 1259期】
  6. 存在感应雷达模块,LED灯感应控制,微波雷达技术应用
  7. 手机、电脑录制内部声音的方法
  8. aso优化时高权重的积分墙关键词_怎样做好积分墙关键词的优化
  9. 计算机图形点阵表示实例,计算机图形学的应用实例(计算机图形作业)精选.doc
  10. 视频会议服务器维护,视频会议系统一般故障与应对措施
  11. 雷军做程序员时写的博客,真心强啊。。
  12. mysql购买服务_云数据库MySQL购买须知
  13. 联发科发布MT7986方案支持Wi-Fi 6/6E
  14. LibreCAD_3编译遇到的问题
  15. 关于html中文显示乱码
  16. Android音频学习之MediaExtractor,提取音频视频轨道数据(从视频中分离音频视频数据)
  17. C++创建windows窗口
  18. 修改材质球面板shader属性数值
  19. Android学习记录(7)—Intent中显示意图和隐式意图的用法
  20. 从零开始学习HarmonyOS应用开发——1

热门文章

  1. Nginx笔记-Nginx中进程结构及使用Linux信号量管理
  2. Python笔记-使用sqlalchemy根据类创建数据库表
  3. Linux学习笔记-Makefile的基本使用
  4. C++带参数控制台(实例)
  5. Java高级语法笔记-文本文件的按行读取
  6. Qt creator5.7 OpenCV249之pyrUp函数(含源码下载)
  7. 清华附2021高考成绩查询,2021年高考多少分能上清华大学?附清华大学录取分数线2020全国汇总...
  8. linux lftp上传文件,linux中使用lftp上传下载文件
  9. hexo部署成功但是没效果_使用 Hexo+GitHub 搭建个人免费博客教程(小白向)
  10. android百度地图例子,使用百度地图API进行Android地图应用开发(Eclipse)(示例代码)...