首页 > 其他分享 >gcd 证明

gcd 证明

时间:2023-05-23 19:46:29浏览次数:44  
标签:kb geq gcd 所以 证明 cases mod

gcd

$ gcd(a,b) $ 表示a与b的最大公约数。here

gcd 证明

设有 $ gcd(a,b)=d(a>b) $ ,则 $ d|a $ 、$ d|b $(也就是d既是a的因数也是b的因数)。

设有 $ k=\lfloor\frac{a}{b}\rfloor $ 、 $ r=a \mod b $,则 $ a=bk+r $。

举个栗子,因为 $ a = 5b+1 = 5 \times 2+1 = 11 $ ,则

\[\begin{cases} k=5\\ r=1 \end{cases} \]

因为 $ d|b $,所以 $ d|kb $(请感性理解)

因为 $ d|kb+r $ (也就是 $ d|a $ )

所以 $ d|r $ (kb是d的倍数,kb+r也是d的倍数,那么r也就是d的倍数了)

上面整理一下就是 $ d|b $ 且 $ d|r $

所以 $ gcd(b,r)=d $ 了……吗?

并不是,为什么呢?假设有 $ 5|20;5|10 $ 但 $ gcd(20,10)\neq5=10 $,所以是 $ gcd(b,r) \geq d $。

我们希望能证明 $ gcd(a,b)=gcd(b,r)=gcd(b,a\mod b) $

所以我们用反证法去证$ gcd(b,r)>d $是不存在的。

反证$ gcd(b,r)>d $是不存在的

设有 $ gcd(b,r)=D>d $,则 $ D|b $ 且 $ D|r $,所以 $ D|kb $。(这里和上面差不多)

因为 $ D|kb $ 而且 $ D|r $,所以 $ D|kb+r $ (转换一下得 $ D|a $ )。现在我们有了 $ D|a $ $ D|b $ ,所以 $ gcd(a,b) \geq D $。

根据最开始说 $ gcd(a,b)=d $ ,所以 $ gcd(a,b)=d \geq D $ ,与 \(D>d\) 矛盾了。

故只有 \(D=d\) 时该假设成立,即 \(gcd(b,r)=d\)

所以\(gcd(a,b)=gcd(b,r)=d\)

化简一下就可以完结撒花: \(gcd(a,b)=gcd(b,a\mod b)\)

……了吗?

我们要设定一个限制条件,即 \(gcd(a,0)=a\)

为什么一定是\(gcd(a,0)=a\)

倒推上去

\(gcd(ak,a)=gcd(a,0)\)

此时ak与a的最大公约数即为a,故\(gcd(a,0)=a\)

最终就有:

\[gcd(a,b) = \begin{cases} a &\text{如果} b=0\\ gcd(b,a\mod b) &\text{如果} b\neq 0 \end{cases} \]

gcd 代码

template<typename T>
T gcd(T a,T b){
	if(b==0) return a;
	return gcd(b,a%b);
}

标签:kb,geq,gcd,所以,证明,cases,mod
From: https://www.cnblogs.com/znpdco/p/17424447.html

相关文章

  • iOS GCD 和信号量 实现 生产者和消费者模式
    GCD提供两种方式支持dispatch队列同步,即dispatch组和信号量。一、dispatch组(dispatchgroup)1.创建dispatch组dispatch_group_tgroup=dispatch_group_create();2.启动dispatch队列中的block关联到group中dispatch_group_async(group,queue,^{//。。。});3.......
  • hdu:gcd(欧拉函数)
    ProblemDescriptionThegreatestcommondivisorGCD(a,b)oftwopositiveintegersaandb,sometimeswritten(a,b),isthelargestdivisorcommontoaandb,Forexample,(1,2)=1,(12,18)=6.(a,b)canbeeasilyfoundbytheEuclideanalgorithm.NowCarpiscon......
  • 初等数论——素数,逆元,EXGCD有关
    初等数论素数定义设整数\(p\ne0,\pm1\)。如果\(p\)除了平凡约数以外没有其他约数,那么称\(p\)为素数(不可约数)。若整数\(a\ne0,\pm1\)且\(a\)不是素数,则称\(a\)为合数。——————OIWiki素数的判定(素性测试)如何判断一个数\(x\)是不是质数?很显然我们可......
  • 2654. 使数组所有元素变成 1 的最少操作次数(c++,gcd性质)
    题目链接:2654.使数组所有元素变成1的最少操作次数方法一:计算最短的gcd为1的子数组解题思路本题目标:使得所有的数组元素都变为\(1\),通过求相邻元素\(gcd\)将其赋值给一方的方式;思路:若想操作数最少,那么就是不为\(1\)的数\(x\)和1求\(gcd\),即\(x=gcd(x,1)\),......
  • CF1750D Count GCD
    Problem多组数据。每组数据给定两个整数\(n\),\(m\)和一个数列\(b\),问有多少种方案构造一个长度为\(n\)的序列\(a\),满足\(1\lea_i\lem\)求\(gcd(a_1,a_2,\cdots,a_i)=b_i\),答案对\(998244353\)取模。Input第一行输入\(t\),表示数据组数。每组数据第一行是两......
  • 事实证明,国产BI软件的财务数据分析性价比极高!
    国产BI软件做财务数据分析的性价比极高,主要得益于两个因素,一个是国产BI软件按功能模块购买,大幅度降低BI大数据分析平台的使用成本;另一个则是国产BI软件已打磨出标准化、系统化的财务数据分析方案,低成本、低风险、高效率。综合这两大因素,企业所需投入的成本被大幅度缩减,但财务数据分......
  • 【230514-1】证明:三角形的中线小于夹它的两边长度之和的一半
    ......
  • 矩阵连乘--从证明到代码实现
    证明 以下是演示与修改 1. 假设A1=25*12,A2=12*35,A3=35*4,A4=4*17;运行dyProg(p,n,m,s)得到的最优解为:A1(A2*A3)A4,此时计算的乘法次数最少为4580;2. 代码执行的过程如下:需要计算的矩阵如下:A1A2A3A425×1212×3535×44×17将其记录......
  • 莫比乌斯反演学习笔记(内涵反演详细推导和证明!)
    莫比乌斯反演前言记得上次学这个东西已经是一年前了,题到没有做过几道……一些有趣的东西莫比乌斯这个人还是很nb的,相信大家都听说过莫比乌斯带,就是他发现的,跟所有数学大佬一样的,他还喜欢天文学和物理废话不扯多了前置知识整除分块一个在数论计算中异常常见的东西,一般和......
  • 拉格朗日反演公式(lagrange inversion)组合证明
    Thereisasimplecombinatorialproof.Theoriginalformis\[[t^n]w^k=\frac{k}{n}[t^{n-k}]\phi^k\]where\(w=t\phi(w)\)consider\(w\)asegf.ofthewaysofsometrees.\(\phi\)asageneratingruleconcerningdegree.\[n![x^n]\frac{w^k}{k......