博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数论初步——扩展欧几里得算法
阅读量:6413 次
发布时间:2019-06-23

本文共 594 字,大约阅读时间需要 1 分钟。

具体内容见紫书p313-p314

一、扩展欧几里得算法

思想:找出一对整数(x,y),使得ax+by=gcd(a,b) 

举例:当“a=6,b=15”时,gcd(6,15)=3,故可以得到解“x=3,y=-1”,当然还有其他解“x=-2,y=1”。

程序:

/*	扩展欧几里得算法	*/ void gcd(int a, int b, int& d, int& x, int& y){	if(b == 0){			//边界,因为 a = gcd(a,0) = ax + 0y ,所以 x=1 , y=0 		d = a;	x = 1;	y = 0;	}	else{		gcd(b, a%b, d, y, x);		//x和y顺序变了 		y -= x*(a/b); 	}}

  

下面方程中的a,b,c为任意整数。

结论1:若方程ax+by=c的一组整数解为(x0,y0),则它的任意整数解都可以写成(x0+kb',y0-ka'),其中a' = a/gcd(a,b),b' = b/gcd(a,b),k取任意整数。

结论2:设g = gcd(a,b),方程 ax+by=g的一组解是(x0,y0),则当c是g的倍数时ax+by=c的一组解是(x0c/g,y0c/g);当c不是g的倍数时无整数解。

转载于:https://www.cnblogs.com/xzxl/p/7500460.html

你可能感兴趣的文章
JS实现继承的几种方式
查看>>
Spring MVC 4.x + fastjson 1.2.7,封装的List<?>参数
查看>>
svn培训
查看>>
js选中问题
查看>>
CentOS 7 Shell脚本编程第二讲 Shell 脚本创建和执行
查看>>
protobuf
查看>>
4.Java基础复习--Set
查看>>
七:Mysql的乐观锁与悲观锁机制
查看>>
CSS滤镜及渐变 (filter样式表属性)
查看>>
调用上面的@InitBinder 解决客户端上传时间参数转换的问题
查看>>
net.sf.json.JSONException: There is a cycle in the hierarchy异常,解决方法
查看>>
OpenStack centos版安装(二)
查看>>
Tomcat虚拟根目录与虚拟子目录
查看>>
Fragment提交transaction导致state loss异常
查看>>
Java中的ReentrantLock和synchronized两种锁定机制的对比
查看>>
Android自动化测试方向
查看>>
OpenGL ES 2.0绘制方式
查看>>
ubuntu 更新和安全
查看>>
QT中常用数据之间转换
查看>>
向量的内积,长度,正交性
查看>>