gcd推导
欧几里得算法有性质: gcd(a, b)=gcd(b, a%b);
那么如何证明呢~
法1:
我们先假设其成立并且有
gcd(a, b)=gcd(b, a%b)=d;
a=k*b+c即a%b=c(我们假设a>=b, 因为a<b的话那么gcd(b, a%b)就相当于交换一下a, b的位置啦);
那么有d|a=d|k*b+d|c (d|a表示a整除d),即在d是(a, b)的公约数的前提下我们可以得到d也是(b, c)的公约数.
假设(a, b)的公约数集合为A, (b, c)的公约数集合为B, 那么有B为A的子集, 如果我们能再证得A为B的子集的话,那么就有A=B,所以A, B中的最大元素也相等,即gcd(a, b)=gcd(b, c);
对于后者的证明我们不防再假设d'|(b, c), 即d'|b , d'|c, 又 a=k*b+c, 所以有 d'|a=d'|k*b+d'|c, 即在d'是(b, c)公约数的前提下我们可以得到d'也是(a, b)的公约数.
综上所述 A=B, 所以gcd(a, b)=gcd(b, c)=gcd(b, a%b). (其实通过这里我们可以看出gcd()里面参数的顺序也是不影响答案的);
法2:
我们先假设
gcd(a, b)=gcd(b, a%b)=d;
x*d=a, y*d=b;
a=k*b+c即gcd(a, b)=gcd(b, c);
则有 c=a-k*b=x*d-k*y*d=(x-k*y)*d;
这里如果我们能证明 gcd(y, x-k*y)=1的话,我们就能证明gcd(b, c)=d啦(很显然嘛,y与x-k*y互质的话,b与c的最大公约数为d)~
我们假设gcd(y, x-k*y)=gg, y=gg*h, x-k*y=gg*j, 那么x=gg*j+k*y=gg*j+k*gg*h, 所以a=x*d=d*gg*(j+k*h), b=y*d=d*gg*h, 所以有gcd(a, b)>=d*gg;
又因为我们前面假设了gcd(a, b)=d, 所以gg=1, 即gcd(y, x-k*y)=1;
所以原式得证~
⊆
gcd推导的更多相关文章
- HDU 2685 GCD推导
求$(a^n-1,a^m-1) \mod k$,自己手推,或者直接引用结论$(a^n-1,a^m-1) \equiv a^{(n,m)}-1 \mod k$ /** @Date : 2017-09-2 ...
- 数学--数论--HDU 5382 GCD?LCM?(详细推导,不懂打我)
Describtion First we define: (1) lcm(a,b), the least common multiple of two integers a and b, is the ...
- zoj.3868.GCD Expectation(数学推导>>容斥原理)
GCD Expectation Time Limit: 4 Seconds Memory Limit: 262144 KB ...
- hdu 5512 Pagodas 扩展欧几里得推导+GCD
题目链接 题意:开始有a,b两点,之后可以按照a-b,a+b的方法生成[1,n]中没有的点,Yuwgna 为先手, Iaka后手.最后不能再生成点的一方输: (1 <= n <= 2000 ...
- HDU1792A New Change Problem(GCD规律推导)
A New Change Problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 【推导】zoj3846 GCD Reduce
题意:给你n个正整数a1...an,一次操作是选择任意两个数ai,aj,将它们都替换成gcd(ai,aj).让你在5n步内将所有数变为1.或者输出不可能. 如果所有数的gcd不为1,显然不可能. 否则 ...
- 【推导】Codeforces Round #410 (Div. 2) C. Mike and gcd problem
如果一开始就满足题意,不用变换. 否则,如果对一对ai,ai+1用此变换,设新的gcd为d,则有(ai - ai+1)mod d = 0,(ai + ai+1)mod d = 0 变化一下就是2 ai ...
- GCD - Extreme (II) for(i=1;i<N;i++) for(j=i+1;j<=N;j++) { G+=gcd(i,j); } 推导分析+欧拉函数
/** 题目:GCD - Extreme (II) 链接:https://vjudge.net/contest/154246#problem/O 题意: for(i=1;i<N;i++) for ...
- BZOJ 2820: YY的GCD 莫比乌斯反演_数学推导_线性筛
Code: #include <cstdio> #include <algorithm> #include <cstring> #include <vecto ...
随机推荐
- Log4j 简单应用
#输出日志的包路径log4j.logger.com=DEBUG,FILE log4j.rootLogger=WARN,stdout #控制台日志 log4j.appender.stdout=org.a ...
- 用JS写了一个打字游戏,反正我是通不了关
今天想写个简单的游戏, 打字游戏好像都没写过, 那么就写打字游戏吧, gamePad包含了关卡的信息, 可以用来调整给个关卡字符下落的速度: getRandom函数会返回一个字符对象, 这个对象包含了 ...
- Mysql 命令大全
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root - ...
- 解决:MIUI 8应用商店下载不了软件 APP
MIUI 8应用商店下载不了软件,是什么原因呢? 原因是:刷了国际版的MIUI,然后又刷回国内的MIUI,刷机时数据没有清理干净. 解决办法:使用RE管理器或者其他第三方可以编辑系统文件的文件管理器, ...
- Python 从零学起(纯基础) 笔记 之 深浅拷贝
深浅拷贝 1. import copy#浅拷贝copy.copy()#深拷贝copy.deepcopy()#赋值 = 2. 对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个 ...
- Nginx高级使用
1.用户认证 客户端访问限制deny 客户端地址: 拒绝访问allow 客户端地址: 允许访问 rpm -q httpd-tools yum -y install httpd-tools user h ...
- git操作---查询
1.查看git的状态 git status 2.查看git的日志历史记录 git log 3.查看当前git的分支 git branch 4.查看git的配置信息 git config --lis ...
- [Head First设计模式]生活中学设计模式——组合模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- NPM
参考资料: 淘宝NPM
- CF memsql Start[c]UP 2.0 B
CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...