当前位置: 首页 > news >正文

大网站整站备份建站之星

大网站整站备份,建站之星,惠州市做网站的公司,山西自助建站系统平台裴蜀定理 描述 对于任意正整数 a a a、 b b b,一定存在整数系数 x x x, y y y,使得: a x b y g c d ( a , b ) ax by gcd(a, b) axbygcd(a,b) 并且 g c d ( a , b ) gcd(a, b) gcd(a,b)是对于任意的系数 x x x和 y y y放在…

裴蜀定理

描述

对于任意正整数 a a a b b b,一定存在整数系数 x x x y y y,使得:
a x + b y = g c d ( a , b ) ax + by = gcd(a, b) ax+by=gcd(a,b)

并且 g c d ( a , b ) gcd(a, b) gcd(a,b)是对于任意的系数 x x x y y y放在 a a a b b b上能凑出的最小正整数。

证明

如下如果有整数系数 x x x y y y,那么 a x + b y ax + by ax+by一定是 g c d ( a , b ) gcd(a, b) gcd(a,b)的倍数,因为 a a a b b b都分别是 g c d ( a , b ) gcd(a, b) gcd(a,b)的倍数。因此能凑出来的数字最小就是 g c d ( a , b ) gcd(a, b) gcd(a,b)

接下来证明一定存在 x x x y y y能凑出 g c d ( a , b ) gcd(a, b) gcd(a,b)。证明存在性的东西可以用构造法,只要把这个东西构造出来了,那么就一定存在了。这个构造的方法就是扩展欧几里得算法,使得对于任意的 a a a b b b,都能构造出来 x x x y y y使得 a x + b y = g c d ( a , b ) ax + by = gcd(a, b) ax+by=gcd(a,b)

扩展欧几里得算法

欧几里得算法是 g c d ( a , b ) = g c d ( b , a m o d b ) gcd(a, b) = gcd(b, a~mod~b) gcd(a,b)=gcd(b,a mod b),递归出口是当 b b b 0 0 0时返回 a a a,因为 0 0 0和任何数的最大公约数就是那个数。

扩展欧几里得算法则是在欧几里得算法的基础上,把系数 x x x y y y构造出来。

考虑到欧几里得算法的递归特性,可以用之前递归出的结果计算出前面的结果。

如,欧几里得算法计算gcd的递归出口是 b b b 0 0 0时返回 a a a,此时 a a a b b b的最大公约数就是 a a a,要使得 a x + b y = a ax + by = a ax+by=a,显然有一组整数解 x = 1 x = 1 x=1 y = 0 y = 0 y=0

考虑除了递归出口之外的递归分支,需要计算 g c d ( b , a m o d b ) gcd(b, a~mod~b) gcd(b,a mod b),假设此时已经求出一组解 y y y x x x(这里将 y y y x x x调换便于计算,不调换也是可以的,结论是另一种写法公式),即使得:
b y + ( a m o d b ) x = g c d ( b , a m o d b ) = g c d ( a , b ) by + (a~mod~b)x = gcd(b, a~mod~b) = gcd(a, b) by+(a mod b)x=gcd(b,a mod b)=gcd(a,b)

考虑到 a m o d b = a − ⌊ a b ⌋ ⋅ b a~mod~b = a - \lfloor \frac{a}{b} \rfloor \cdot b a mod b=abab,整理一下 a a a b b b的系数,得到:
a x + ( y − ⌊ a b ⌋ ⋅ x ) b = g c d ( a , b ) ax + (y - \lfloor \frac{a}{b} \rfloor \cdot x) b = gcd(a, b) ax+(ybax)b=gcd(a,b)

因此,从上一组解的 x x x不变, y y y减去 ⌊ a b ⌋ ⋅ x \lfloor \frac{a}{b} \rfloor \cdot x bax就是为 a a a b b b构造的系数解。

#include <iostream>using namespace std;int exgcd(int a, int b, int& x, int& y) {if (!b) {x = 1, y = 0;return a;}int d = exgcd(b, a % b, y, x);y -= a / b * x;return d;
}int main() {int t; cin >> t;while (t -- ) {int a, b; cin >> a >> b;int x, y;exgcd(a, b, x, y);cout << x << ' ' << y << endl;}return 0;
}
http://www.15wanjia.com/news/42533.html

相关文章:

  • 中国建筑设计网站谷歌google官方下载
  • 竹子建站加盟咨询淘宝推广
  • 重庆微信网站开发怎么样做网站推广
  • 代码之家seo产品是什么意思
  • 网站建设网络推广百度店铺
  • 成都解封公告seo百度点击软件
  • 小程序开发厂家湖南靠谱的关键词优化哪家好
  • 网站建设360域名注册1元
  • 网站死链修复seo上海推广公司
  • 山西免费网站制作网络广告策划与制作
  • 网站建设一定要公司吗网店推广软文范例
  • 网站空间 按流量计费爱站站长工具
  • 网上推广怎么拉客户廊坊seo优化排名
  • c 做彩票网站2023新冠结束了吗
  • 技术支持 湖州网站建设怎么找精准客户资源
  • 食品贸易网站建设案例我要推广网
  • 做国学类网站合法吗怎么交换友情链接
  • 做网站文案策划步骤seo结算系统
  • 美国做网站价格深度优化
  • 莱芜企业网站建设公司国内seo服务商
  • 企业网站模板中文百度云搜索引擎入口官方
  • 手表在哪个平台买正品西安seo网站关键词优化
  • wordpress自适应手机端seo网络培训
  • 邢台做网站哪家便宜免费私人网站建设软件
  • 太原建设局网站电商培训机构推荐
  • 有没有悬赏做ppt的网站东莞网站优化关键词排名
  • 手机网站用什么做的上海宝山网站制作
  • 网站建设 海外房产seo推广效果怎么样
  • bootstrap 自适应网站短视频培训学校
  • 做二手车网站需要什么手续嘉兴seo优化