精华内容
下载资源
问答
  • 主要介绍了Python基于辗转相除法求解最大公约数的方法,结合实例形式分析了Python使用辗转相除法求解最大公约数的实现方法与优化操作技巧,需要的朋友可以参考下
  • 本文实例讲述了Python使用辗转相除法求解最大公约数的方法。共享给大家供大家参考,详细如下:之前总结过一次高德纳TAOCP中的最大公约数求解,其实课后题中的算法改要求实现的是辗转相除法求解最大公约数。这个题目...

    本文实例讲述了Python使用辗转相除法求解最大公约数的方法。共享给大家供大家参考,详细如下:

    之前总结过一次高德纳TAOCP中的最大公约数求解,其实课后题中的算法改要求实现的是辗转相除法求解最大公约数。

    这个题目我最初的了解了解错了,自然也没有做出标准答案。现在按照标准答案的解答写一下相应的代码实现:

    # -*- coding:utf-8 -*-

    #! python2

    def MaxCommDivisor(m,n):

    while m * n != 0:

    m = m % n

    if m == 0:

    return n

    else:

    n = n % m

    if n == 0:

    return m

    print(MaxCommDivisor(55,120))

    程序的执行结果:

    20201108121741158477.png

    交换一下两个数字的位置,代码如下:

    # -*- coding:utf-8 -*-

    #! python2

    def MaxCommDivisor(m,n):

    while m * n != 0:

    m = m % n

    if m == 0:

    return n

    else:

    n = n % m

    if n == 0:

    return m

    print(MaxCommDivisor(120,55))

    程序的执行结果:

    20201108121741158478.png

    题目提示中提到了会降低效率,通过上面的代码来看,效率的损失应该是在除法以及判断上。在此,把之前算法的代码拿过来对比一下:

    def CommDevisor(m,n):

    r = m % n

    while r != 0:

    m = n

    n = r

    r = m % n

    return n

    print(CommDevisor(120,25))

    运行结果:

    20201108121741158479.png

    新版算法在循环中,多了一个除法以及比较操作。其实,比较的效率还是不错的,但是除法的运算会导致效率的降低。

    PS:这里再为大家推荐几个计算工具供大家进一步参考借鉴:

    线上一元函数(方程)求解计算工具:http://tool.in68.com/jisuanqi/equ_jisuanqi

    科学计算器线上使用_高级计算器线上计算:http://tool.in68.com/jisuanqi/jsqkexue

    线上计算器_标准计算器:http://tool.in68.com/jisuanqi/jsq

    更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

    希望本文所述对大家Python程序设计有所帮助。

    展开全文
  • 辗转相除法辗转相除法」又叫做「欧几里得算法」,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的.利用这个方法,可以较快地求出两个自然数的最大公因数,即 HCF 或叫做 gcd.所谓最大公因数,是...

    辗转相除法

    「辗转相除法」又叫做「欧几里得算法」,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的.利用这个方法,可以较快地求出两个自然数的最大公因数,即 HCF 或叫做 gcd.所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作 gcd(8,12)=4.

    在介绍这个方法之前,先说明整除性的一些特点,注以下文的所有数都是正整数,以后不再重覆.

    我们可以这样给出整除以的定义:

    对於两个自然数 a 和 b,若存在正整数 q,使得 a=bq,则 b 能整除 a,记作 b | a,我们叫 b 是 a 的因数,而 a 是 b 的倍数.

    那麼如果 c | a,而且 c | b,则 c 是 a 和 b 的公因数.

    由此,我们可以得出以下一些推论:

    推论一:如果 a | b,若 k 是整数,则 a | kb.因为由 a | b 可知 ha=b,所以 (hk)a=kb,即 a | kb.

    推论二:如果 a | b 以及 a | c,则 a | (b±c).因为由 a | b 以及 a | c,可知 ha=b,ka=c,二式相加,得 (h+k)a=b+c,即 a | (b+c).同样把二式相减可得 a | (b-c).

    推论三:如果 a | b 以及 b | a,则 a=b.因为由 a | b 以及 b | a,可知 ha=b,a=kb,因此 a=k(ha),hk=1,由於 h 和 k 都是正整数,故 h=k=1,因此 a=b.

    辗转相除法是用来计算两个数的最大公因数,在数值很大时尤其有用而且应用在电脑程式上也十分简单.其理论如下:

    如果 q 和 r 是 m 除以 n 的商及余数,即 m=nq+r,则 gcd(m,n)=gcd(n,r).

    证明是这样的:

    设 a=gcd(m,n),b=gcd(n,r)

    则有 a | m 及 a | n,因此 a | (m-nq)(这是由推论一及推论二得出的),即 a | r 及 a | n,所以 a | b

    又 b | r 及 b | n,所以 b | (nq+r),即 b | m 及 b | n,所以b | a.因为 a | b 并且 b | a,所以 a=b,即 gcd(m,n)=gcd(n,r).

    例如计算 gcd(546,429),由於 546=1(429)+117,429=3(117)+78,117=1(78)+39,78=2(39),因此

    gcd(546,429)

    =gcd(429,117)

    =gcd(117,78)

    =gcd(78,39)

    =39

    最小公倍数就是2个数的积除以最大公约数

    作业帮用户

    2017-10-24

    举报

    展开全文
  • python辗转相除法最大公约数

    万次阅读 多人点赞 2018-01-18 15:32:55
    辗转相除法:(1)比较两数,并使m>n(2)将m作被除数,n做除数,相除后余数为r(3)循环判断r,若r==0,则n为最大公约数,结束循环。若r !=0 ,执行m=n,n=r;将m作被除数,n做除数,相除后余数为r运行代码如下:...

    辗转相除法:

    (1)比较两数,并使m>n

    (2)将m作被除数,n做除数,相除后余数为r

    (3)循环判断r,若r==0,则n为最大公约数,结束循环。若r !=0 ,执行m=n,n=r;将m作被除数,n做除数,相除后余数为r

    运行代码如下:

    num1 = int(input("请输入第一个数字:"))
    num2 = int(input("请输入第一个数字:"))
    m = max(num1, num2)
    n = min(num1, num2)
    r = m % n
    while r != 0:
        m = n
        n = r
        r = m % n
    print(num1, "和", num2, "的最大公约数为", n)
    


    展开全文
  • python辗转相除法最大公约数

    千次阅读 2020-07-27 18:35:41
    m=eval(input('请输入正整数m:')) n=eval(input('请输入正整数n:')) k=1 #定义K while k!=0: k=m%n m=n n=k print('最大公约数是:',m) #n已经传递给m
    m=eval(input('请输入正整数m:'))
    n=eval(input('请输入正整数n:'))
    k=1  #定义K
    while k!=0:
        k=m%n
        m=n
        n=k
    print('最大公约数是:',m) #n已经传递给m

     

    展开全文
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、...
  • python实现用辗转相除法最大公约数
  • 对于辗转相除法的证明:https://blog.csdn.net/er111er/article/details/79251895 原作者写得很棒。 def gcd(a,b): return a if b==0 else gcd(b,a%b) 首先核心在于:a和b的最大公约数等价于b和a对b求余的最大公...
  • 辗转相除法也称欧几里得算法,是用来求两个正整数的最大公约数的算法。接下来我们用实例来解释一下。假如我们需要求12和21的最大公约数,用辗转相除法是这样实现的: 21 / 12 = 1 (余 9) 12 / 9 = 1(余 3) 9 / 3...
  • Python3编写辗转相除法最大公约数让我们直接上代码吧 让我们直接上代码吧 代码来源:牛客网的一道题。 def f(a, b): if b == 0: print(a) else: f(b, a%b) a = int(input("Enter two natural numbers: ")) b...
  • python辗转相除法最大公约数

    千次阅读 2018-05-30 21:08:56
    def gcd(a, b): if a < b: a, b = b, a while b != 0: temp = a % b print temp a = b b = temp return a print gcd(8251,6105) 求出了这个数可以求出最小倍数。(...
  • http://blog.csdn.net/jtujtujtu/article/details/44071712009辗转相除法最大公约数辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至前...
  • #辗转相除法求解最大公约数 def Toss_and_Divide_method(m,n): #m和n中有一个为0时,循环结束 while m * n != 0: #若m>n则m为m/n的余数 #若m<n则m还为m m = m % n #如果m被n整除,说明n就是最大公约数 ...
  • Python利用辗转相除法
  • 举例: 使用辗转相除法求 288 和 158 的最大公因数 288 = 158 * 1 + 130 158 = 130 * 1 + 28 130 = 28 * 4 + 18 28 =18 * 1 + 10 18 = 10 * 1 + 8 10 = 8 * 1 + 2 8 = 2 * 4 所以(288,158) = (158,130) = (130,28) ...
  • Python中用辗转相除法求两个整数的最大公约数和最小公倍数首先,得到两个已知的正整数m、n,使得m > n(这里可以通过if语句判断m、n的大小,然后用三条语句使得m > n)例如:if m < n:t = nn = mm = t通过m ...
  • 下面使用递归和迭代的方法求解最大公约数,代码如下: # 递归求解 def gcd(a: int, b: int): # 类似于三目运算符 return a if b == 0 else gcd(b, a % b) # 迭代求解 def gcd2(a: int, b: int): while b > 0: t = b ...
  • 三个数求最大公约数和求最小公倍数,可否用辗转相除法?例如:三个数求最大公约数:先求前两个数的最大公约数a,然后用a和第三个数再求最大公约数b,得到三个数的最大公约数三个数求最小公倍数:先求前两个数的最小...
  • 辗转相除法最大公约数Python

    千次阅读 2019-05-15 17:32:34
    辗转相除法最大公约数Python) #辗转相除法 #1大数除以小数得到余数 #2用余数除以1中的除数得到余数 #3重复2直到余数等于0返回除数即为两数的最大公约数 def eucAlg(a,b): if a<b: c=a a=b b=c while 1:...
  • 辗转相除法公约数-python实现

    千次阅读 2020-04-13 15:04:59
    辗转相除法辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。 例如,求(319,377): ∵ 319÷377=0(余319) ∴(319,377)=(377,319); ∵ 377÷319=1(余58) ∴(377,319)=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,433
精华内容 573
关键字:

python最大公约数辗转相除法

python 订阅