扩展欧几里得算法求逆元c语言,利用扩展欧几里得算法编程求逆元
原理:
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语言,利用扩展欧几里得算法编程求逆元相关推荐
- 扩展欧几里得算法求逆元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 ...
- matlab随机矩阵求最大值,产生一个5*7的随机矩阵,编程求出其最小值和最大值及其所处的位置....
matlab中怎么产生一个随机矩阵 and(m,n)产生mxn,0~1均匀分布的随机矩阵 1.VB编程,求一个M行N列的矩阵四周元素之和,元素值可以随机产生,M. N从键盘输入 这个是那一章的全部答案 ...
- 图十字链表并求度c语言,利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现...
#include #include #include /* 利用十字链表存储有向图,可用于同时查找某个顶点的出度与入度: */ typedef struct edge{//顶点表 int headve ...
- c语言利用查表法画正弦波,嵌入式C语言查表法在项目中的应用
就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑马灯的话,思考一个这样的算法是不可取的,很费时间,也很费脑力,于 ...
- c语言默认程序文件扩展名,系统默认的C语言源程序扩展名为.C,需经过()之后,生成.exe文件,才能运行。...
摘要: 系统序扩需经新石器时代的特征不包含().大型公关活动一定要及时摄影摄像,展名以备后期随时调用.()在全省工业中居于领先的位置,为C文件具有举足轻重的地位和作用的特色工业是()... 系统序扩需 ...
- c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解
欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...
- 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的网友咨询 浏 ...
- maple 解代数方程组得多项式_利用修正影射法求组合KdV方程新的精确解
1引言非线性科学研究的一个重要方面就是讨论孤立子的性质.相互作用及其随时间运动演化的特点,因此非线性演化方程的求解越来越显得具有理论和实际意义.组合KdV方程是KdV和mKdV方程的复合,既包含有非线 ...
- 利用雅可比方法求线性方程组C语言_优化方法(一)
1. 梯度下降法(Gradient Descent) 针对无约束最优化问题,梯度下降法是常用的最优化方法之一,其法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解. 梯度下降法的优化思想是用当前 ...
- C语言程序设计之编程求鸡和兔的只数,用穷举法解决
CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...
最新文章
- Python几种主流框架
- 如果我是小白, 学Python要准备什么呢?
- 如何打赢一场唯快不破的比赛,看看他们的绝招
- Jmeter学习笔记三_操作数据库(MySQL)
- 网站使用CloudFlare
- 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)
- uvm 形式验证_验证平台自动化篇之二:UVM Framework
- Android插件化开发基础之App如何动态加载类
- 服务器选购seo优化规则,网站seo优化注意事项1—域名和服务器选择
- c python boost.python_如何利用Boost.Python实现Python C/C++混合编程详解
- zookeeper在linux环境安装
- sqoop导出数据时如何选择update-key
- PHP echo 即时输出
- 在API中发现的好东东
- cs七龙珠机器人_CS七龙珠机器人的命令
- 计算机恢复出场设置,小白教你电脑恢复出厂设置
- 论坛报名 | DataFunCon:用户画像论坛
- WinEdit + CTex 打开论文模板出现乱码
- Mac没有winnt格式_好用易操作,适用于Mac用户的5个免费FLV视频播放器
- iOS开发-简单图片背景替换 实现抠图效果