原理:

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

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 ;

}

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

  1. 扩展欧几里得算法求逆元c语言,关于扩展欧几里得算法和逆元

    关于扩展欧几里得算法和逆元 1.扩欧 a*x1+b*y1=gcd(a,b); b*x2+(a%b)*y2=gcd(b, (a%b))= gcd(a,b); a%b=a-(a/b)*b; 联立可得 x1 ...

  2. matlab随机矩阵求最大值,产生一个5*7的随机矩阵,编程求出其最小值和最大值及其所处的位置....

    matlab中怎么产生一个随机矩阵 and(m,n)产生mxn,0~1均匀分布的随机矩阵 1.VB编程,求一个M行N列的矩阵四周元素之和,元素值可以随机产生,M. N从键盘输入 这个是那一章的全部答案 ...

  3. 图十字链表并求度c语言,利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现...

    #include #include #include /* 利用十字链表存储有向图,可用于同时查找某个顶点的出度与入度: */ typedef struct edge{//顶点表 int headve ...

  4. c语言利用查表法画正弦波,嵌入式C语言查表法在项目中的应用

    就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑马灯的话,思考一个这样的算法是不可取的,很费时间,也很费脑力,于 ...

  5. c语言默认程序文件扩展名,系统默认的C语言源程序扩展名为.C,需经过()之后,生成.exe文件,才能运行。...

    摘要: 系统序扩需经新石器时代的特征不包含().大型公关活动一定要及时摄影摄像,展名以备后期随时调用.()在全省工业中居于领先的位置,为C文件具有举足轻重的地位和作用的特色工业是()... 系统序扩需 ...

  6. c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解

    欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...

  7. c语言分母多项乘积怎么算,C++编程 用梯形求积公式求解定积分∫3lnxdx积分区间为(1,2, C语言,用梯形法编程求定积分x^3+x/2+1的值...

    问题标题 C++编程 用梯形求积公式求解定积分∫3lnxdx积分区间为(1,2, C语言,用梯形法编程求定积分x^3+x/2+1的值 2019-8-16来自ip:15.179.13.64的网友咨询 浏 ...

  8. maple 解代数方程组得多项式_利用修正影射法求组合KdV方程新的精确解

    1引言非线性科学研究的一个重要方面就是讨论孤立子的性质.相互作用及其随时间运动演化的特点,因此非线性演化方程的求解越来越显得具有理论和实际意义.组合KdV方程是KdV和mKdV方程的复合,既包含有非线 ...

  9. 利用雅可比方法求线性方程组C语言_优化方法(一)

    1. 梯度下降法(Gradient Descent) 针对无约束最优化问题,梯度下降法是常用的最优化方法之一,其法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解. 梯度下降法的优化思想是用当前 ...

  10. C语言程序设计之编程求鸡和兔的只数,用穷举法解决

    CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...

最新文章

  1. Python几种主流框架
  2. 如果我是小白, 学Python要准备什么呢?
  3. 如何打赢一场唯快不破的比赛,看看他们的绝招
  4. Jmeter学习笔记三_操作数据库(MySQL)
  5. 网站使用CloudFlare
  6. 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)
  7. uvm 形式验证_验证平台自动化篇之二:UVM Framework
  8. Android插件化开发基础之App如何动态加载类
  9. 服务器选购seo优化规则,网站seo优化注意事项1—域名和服务器选择
  10. c python boost.python_如何利用Boost.Python实现Python C/C++混合编程详解
  11. zookeeper在linux环境安装
  12. sqoop导出数据时如何选择update-key
  13. PHP echo 即时输出
  14. 在API中发现的好东东
  15. cs七龙珠机器人_CS七龙珠机器人的命令
  16. 计算机恢复出场设置,小白教你电脑恢复出厂设置
  17. 论坛报名 | DataFunCon:用户画像论坛
  18. WinEdit + CTex 打开论文模板出现乱码
  19. Mac没有winnt格式_好用易操作,适用于Mac用户的5个免费FLV视频播放器
  20. iOS开发-简单图片背景替换 实现抠图效果

热门文章

  1. 软件开发常用的四种模式
  2. 下载全球高清卫星影像地图
  3. 5.4 logistic回归分析
  4. HTML的注释与JavaScript注释及快捷键
  5. WPF界面设计的方法
  6. dell 2u服务器型号,IBM、HP、Dell比拼主流2U双路服务器
  7. win7开机提示由于系统注册表文件丢失或损坏因此无法加载怎么办
  8. wowza 技术交流群/ wowza 流媒体软件交流群
  9. 显卡硬解4k测试软件,对飙4K硬解 看谁才是笑到最后的大佬
  10. 【笔记】Loop曲面细分算法c++实现