欧几里得算法有性质: 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推导的更多相关文章

  1. 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 ...

  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 ...

  3. zoj.3868.GCD Expectation(数学推导>>容斥原理)

    GCD Expectation Time Limit: 4 Seconds                                     Memory Limit: 262144 KB    ...

  4. hdu 5512 Pagodas 扩展欧几里得推导+GCD

    题目链接 题意:开始有a,b两点,之后可以按照a-b,a+b的方法生成[1,n]中没有的点,Yuwgna 为先手, Iaka后手.最后不能再生成点的一方输: (1 <= n <= 2000 ...

  5. HDU1792A New Change Problem(GCD规律推导)

    A New Change Problem Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  6. 【推导】zoj3846 GCD Reduce

    题意:给你n个正整数a1...an,一次操作是选择任意两个数ai,aj,将它们都替换成gcd(ai,aj).让你在5n步内将所有数变为1.或者输出不可能. 如果所有数的gcd不为1,显然不可能. 否则 ...

  7. 【推导】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 ...

  8. 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 ...

  9. BZOJ 2820: YY的GCD 莫比乌斯反演_数学推导_线性筛

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <vecto ...

随机推荐

  1. Linux命令 -- 查看系统版本的各种方法

    适用于CentOS

  2. 了解了下 Google 最新的 Fuchsia OS

    就是看到篇报道,有点好奇,就去FQ挖了点东西回来. 我似乎已开始就抓到了重点,没错,就是 LK . LK 是 Travis Geiselbrecht 写的一个针对 ARM 的嵌入式操作系统,开源的.点 ...

  3. JQuery 实现标题与内容相呼应样式

    效果图如下:鼠标移到标题上,标题下面显示标题对应的内容.实现的方法如下: 1.引入css和js文件 <link href="public/CSS/StyleSheet.css" ...

  4. <<< chm格式文件打不开及一些问题

    CHM 意为 Compiled HTML.以CHM为扩展名的文件图标通常为一个带问号的文档图标,表示帮助文档,是 Microsoft 自 Windows 98 以来提供的一种帮助文档格式的文件,用于替 ...

  5. 创建一个自定义颜色IRgbColor

    后续文章需要用到,很简单的一个小函数 /// <summary> /// 自定义颜色 /// </summary> /// <param name="r&quo ...

  6. 第二轮冲刺-Runner站立会议07

    今天:实现日历界面 明天:优化日历界面

  7. 数据存储_SQLite常用的函数

    一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 **ppDb            // 数据 ...

  8. 今天又学了一招,牛逼!!!解决"-bash:No such file or directory"问题

    今天在64服务器上:发现好像bash 坏了,用户名前边   用-bash 显示,,前几天就发现这个问题,,,但是当时忙没有解决,,,,,今天来看看到底是怎么回事! File Exists but... ...

  9. Bash 里的转义序列

    在 Bash 里,一共有五个地方支持反斜杠开头的转义序列,包括两个内部命令 echo 和 printf 的参数里,字符串语法 $'...' 里,还有四个提示符变量 PS1-PS4 里,以及在 Read ...

  10. CSS3 时钟

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...