首页 > 其他分享 >gcd(a, b) = gcd(b, a % b)的证明

gcd(a, b) = gcd(b, a % b)的证明

时间:2023-01-26 16:22:25浏览次数:63  
标签:return gcd int 可知 证明 mod

\[\huge gcd(a, b)=gcd(b, a \mod b)的证明 \]

首先假设存在\(a,b,c\)这三个数,若其满足\(a = q*b + c\) ,证明:\((a, b) = (b, a \mod b)\)

证明:

\(\because\)首先可以由\((a, b)\)可知,\((a, b) | a\),\((a, b) | b\) ;

\(\therefore\)由上式可知:

\[c=q1*(a, b)-q2*q*(a, b)=(a,b) *(q1 - q2 * q) \]

\(\therefore\)可知\((a,b) | c\)。

\(\therefore\) 可知\((a,b)|b,(a, b)|c\) ;故\(gcd(a,b)\) 是\(b\),\(c\)的一个公因子;故有:

\[(a,b)\leqslant (b,c) \]

同理,可以知道\((a,b)\geqslant (b,c)\) ;那么可知\((a,b)=(b,c)\);即\(gcd(a,b)=gcd(b,a \mod b)\) ;

此等式是欧几里得算法能够计算出\(gcd\)的保障。

代码实现如下:

通过上述等式来理解,当\(a \mod b = 0\)那么就不用递归,直接返回\(gcd(a,b)= b\)即可

func gcd(a, b int) int {
    if a % b == 0 {
        return b
    }
    return gcd(b, a % b)
}

还有一种写法,就是不断的递归下去,\(b\)会等于\(0\) ,那么当\(b\)等于\(0\)时,直接return a

func gcd(a, b int) int {
    if b == 0 {
        return a
    }
    return gcd(b, a % b)
}

Q&A

Q:\(gcd(a,b)=gcd(a,a\mod b)\)成立吗?

A:很显然无法证明。具体证明方法如上。

标签:return,gcd,int,可知,证明,mod
From: https://www.cnblogs.com/hellozmc/p/17067889.html

相关文章

  • CF1780B GCD Partition
    从\(k\)的角度出发,可以发现一定存在某种\(k=2\)的划分方式,使得最终获得的分数最大。为什么呢?假定划分为\(k=3\)时取得了最大分数,即\(\gcd(b_1,b_2,b_3)=g......
  • “一句话证明你是程序员”,你们的评论要不要这么有才!
     “一句话证明你是程序员”活动在大家的热情参与下落下帷幕,在这个属于猿媛们的“1024程序员节”里,你们都玩开心了,玩过瘾了,才是我们的初衷哦!小透露一下,明年的“1024程序员节......
  • 扩展欧几里得算法 exgcd
    凌:前言\(\tt\#include~"\)\(\tt{\small\texttt{扩展欧几里得算法-}}OI~Wiki\)\(\tt"\)\(\tt\#include~"\)\(\tt{\small\texttt{关于}}~exgcd~{\small\texttt{求得......
  • [ARC144E]GCD of Path Weights
    ProblemStatementYouaregivenadirectedgraph$G$with$N$verticesand$M$edges.Theverticesarenumbered$1,2,\ldots,N$.The$i$-thedgeisdirected......
  • GCD辗转相除的经典套路
      2543.判断一个点是否可以到达-力扣(Leetcode)前两个移动很像辗转相除法(这个套路在Codeforces上已经出烂了)<br>后两个移动可以让 g 乘上$2^k$classS......
  • KMP算法详解(逻辑分析&数学证明&代码实现)
    前言KMP算法是Knuth、Morris、Pratt三人在BF算法的基础上同时提出的模式匹配的高效算法。本文以字符串匹配问题为例,以通俗易懂的语言对KMP算法进行逻辑分析、数学证明和代码......
  • 零知识证明(Zero-Knowledge Proof)
    零知识证明(ZeroKnowledgeProof)指的是,证明的人可以向验证的人,在不透露任何有用信息的情况下,使得验证者相信该结论是对的。三种零知识证明技术:zk-SNARKs,Zk-STARKs和......
  • 最高院-实际施工人的施工范围无法最终确定时,承包人应付实际施工人规费的范围以其能证
    (2022)最高法民再168号  张新平、安仁县成虎商联房地产开发有限公司等建设工程施工合同纠纷民事再审民事判决书关键词:实际施工人 规费申请人主张:(二)二审判决适用法律错......
  • 银行家算法中安全检查算法正确性证明
    符号说明\(<_{\forall}\):如果两个同维行向量\(A\)、\(B\)中,\(A\)中任意一个元素都小于\(B\)中对应位置上的元素,则\(A<_{\forall}B\)为真。\(<_{\exist}\):如果两......
  • exgcd & 线性同余方程
    前置芝士裴蜀定理exgcdexgcd即扩展欧几里得定理,常用来求解\(ax+by=gcd(a,b)\)的可行解问题推导过程:考虑我们有:​ \(ax+by=gcd(a,b)\)——裴蜀定理​ \(a_......