首页 > 其他分享 >辗转相除法的证明

辗转相除法的证明

时间:2023-05-31 10:37:44浏览次数:28  
标签:nk gcd 迭代 辗转 样例 证明 sys print 除法

描述

给出两个整数 ab,请计算 ab 的最大公约数,通过 print 语句输出。

 

辗转相除法的证明_最大公约数

样例

评测机将通过执行命令 python main.py {a} {b} 来执行你的代码,并将 ab 作为命令行参数传入。

样例一

a = 15b = 12 时,程序执行打印出的结果为:

3

样例二

a = 10b = 7 时,程序执行打印出的结果为:

1

挑战

你可以用时间复杂度比 O(n) 更小的方法来解决该问题吗?

 

 

import sys

a = int(sys.argv[1])
b = int(sys.argv[2])
# write your code here
# please print the greatest common divisor of a and b

def gcd(a, b):
    if a % b == 0:
        return b
    return gcd(b, a % b)

print(gcd(a, b))

 

如何证明辗转相除法的正确呢???

我自己想到的一个思路,假设a,b的最大公约数是k,则有a=mk, b=nk;当然,m<n

为了找到k,采用mk%nk=?k,?肯定是小于n的,如果能够使用迭代算法,让?=1,则两个求余结果就是k,也就是要找的最大公约数了。

好,迭代如下:

mk%nk=?k

nk%?k=??k

?k%??k=???k

??%???k=....

则?一直迭代下去肯定会为1。因为两个不断变小的整数相除求余一定会迭代终止,终止条件势必被除数是1.

 

标签:nk,gcd,迭代,辗转,样例,证明,sys,print,除法
From: https://blog.51cto.com/u_11908275/6384675

相关文章

  • 下取整/高斯 函数的性质证明
    $$已知:\lfloorx\rfloor\leqx< \lfloorx\rfloor+1,\lfloor\lfloorx\rfloor\rfloor=\lfloorx\rfloor$$$$证明:\lfloor\frac{\lfloor\frac{x}{a}\rfloor}{b}\rfloor=\lfloor\frac{x}{a\timesb}\rfloor$$$$那么有\lfloor\frac......
  • 这是道简单的初中物理问题,但本人数学不好,给不出证明
    数学吧  《这是道简单的初中物理问题,但本人数学不好,给不出证明》    https://tieba.baidu.com/p/8432343642    。 这题 既有物理, 又有数学, 很有趣, 是有模有样的趣味科学,  延伸一下, 还会延伸到计算误差耦合 。  误差耦合 见  ......
  • 转换mod为除法
    Problem-B-Codeforces对于最后一句话:“>的个数是bn/m"因为0<=bi+1-bi<m,那么找>就是找有多少个点bi/m从x到x+1(0->1,1->2类似于这样子的),那么这样子到n时前面就有bn/m个这样子的点 #include<bits/stdc++.h>usingnamespacestd;#defineendl"\n"typedeflonglo......
  • 分解质因数--试除法
     #include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;voiddivide(intn){for(inti=2;i<=n;i++)//这个地方是枚举到n{if(n%i==0){ints=0;while(n%i==0)......
  • 数学巧思笔记(证明+概念组合)
    利用夹逼准则+三角函数公式,求证$\lim\limits_{x\to0}\frac{sinx→三角形}{x→角度}=1$......
  • 「闲话随笔」卢卡斯定理证明
    「闲话随笔」卢卡斯定理证明点击查看目录目录「闲话随笔」卢卡斯定理证明今天看见同桌在求导,于是问他会不会证明卢卡斯定理,他说不知道这玩意。然后突然发现我也不会......
  • 关于一些初等数论的证明
    未完工。目前咕掉的:卢卡斯定理真正有用的一个没有质数:威尔逊定理:\(p\)为质数的充要条件为\((p-1)!\equiv-1\pmodp\)证明:\(1.\)充分性:反证,假设\(p\)是合数。如果\(p\)为质数的平方,例如\(p=4\),则\(3!\equiv2\pmod4\),不成立。令\(p=k^2\),因为\(p>4\),所以\(......
  • 欧拉函数|欧拉函数及其性质|欧拉函数及其性质证明 一文说明白
    欧拉函数在数论,对正整数n,欧拉函数是小于等于n的正整数中与n互质的数的数目。读作phi。\(\LaTeX\)大写:\phi\(\phi\),小写:\varphi\(\varphi\)部分选自百度百科欧拉函数的性质以下所有\(p\)表示质数性质1\[\varphi(p)=p-1\]性质1的证明根据质数的定义,比p小的数......
  • 如何证明Servlet是单例的?
    Servlet是web体系里面最重要的部分,下面罗列几道常见的面试题,小伙伴们一定要好好记住哈。1.Servlet是单例的吗,如何证明?Servlet一般都是单例的,并且是多线程的。如何证明Servlet是单例模式呢?很简单,重写Servlet的init方法,或者添加一个构造方法。然后,在web.xml中配置。如:<?xml ve......
  • 辗转相除法求最大公因数
    #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;inta,b;//辗转相除法求最大公因数intgcd(inta,intb){if(b==0)returna;returngcd(b,a%b);}intmain(){cin>&......