欧几里得求最大公约数/python

原创 2015年07月09日 13:48:39
这个个求最大公约数的函数,利用了欧几里得算法。

欧几里得法求最大公约数:
求a和b的最大公约数
记 a mod b=c ,即a=kb+c 
设a b的最大公约数为d,则a=m*d b=n*d,m和n互质。
c=a-kb=md-knd=(m-kn)d,m和n互质,则n和m-kn互质,c和b的最大公约数也是d
所以: "a和b(a>b)的最大公约数等于b和a Mode b的最大公约数",递归或迭代计算,直到余数为0,此时除数为最大公约数


也可以这样理解:
a=m*d b=n*d,m和n互质,c=a-b=(m-n)*d,m-n 和 n互质,

即,"a 、b(a>b)的最大公约数等于 b 和 a-b 的最大公约数。"递归或迭代计算,直到两数相等,此时的值为最大公约数。


def gcd(big,small):
    remainder = big % small
    if remainder == 0:
        return small
    else:
        gcd(small,remainder) --->这里没有加return ,函数会返回None,因为执行if判断后else默认返回None

def gcd(big,small):
    remainder = big % small
    if remainder == 0:
        return small
    else:
       return gcd(small,remainder) 

相关文章推荐

最大公约数欧几里德算法及Python实现

欧几里德算法又称辗转相除法,用于计算两个整数m, n的最大公约数。其计算原理依赖于下面的定理:    gcd(m, n) = gcd(n, m mod n)这个定理的意思是:整数m、n的最大公约数等于...
  • jq0123
  • jq0123
  • 2007年04月11日 14:51
  • 4963

C001:最大公约数欧几里德算法及Python实现

欧几里德算法又称辗转相除法,用于计算两个整数m, n的最大公约数。其计算原理依赖于下面的定理:     gcd(m, n) = gcd(n, m mod n) 这个定理的意思是:整数m、n...

python之计算两数的最大公约数和最小公倍数

## 公约数 | 公倍数 import os,sys def GYS(m,n): #取小值 if m
  • sauphy
  • sauphy
  • 2015年11月19日 01:22
  • 1410

Python求两个正整数的最大公约数和最小公倍数

#-*- encoding: utf-8 -*- def gcm(a, b): assert a > 0 and b > 0,'parameters must be greater than 0....
  • mscf
  • mscf
  • 2015年06月08日 11:19
  • 2682

使用Python求解最大公约数

使用Python求解两个数的最大公约数的时候用到了以前写过的一个小程序,也就是分解质因式。其实,我写分解质因式程序的时候就是因为发现在实现最大公约数求解的过程中用到了这个功能。       比较令我...

python(四) 求两数的GCD(最大公约数)

这个题主要是训练了函数的写法 还有模板一般放在开头, 养成好习惯 import sys def gcd(a,b): if a%b == 0: return b els...

python中的最大公约数

def showMaxFactor(num) count = num//2: while count>1: if num%count == 0 ...

欧几里得算法求最大公约数

  • 2014年03月25日 09:26
  • 524B
  • 下载

欧几里得减法求最大公约数

  • 2011年05月19日 19:13
  • 336B
  • 下载

欧几里得算法求最大公约数的递归和非递归实现

在数学中,欧几里得算法,又称辗转相除法,是求最大公约数(greatest common divisor)的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:欧几里得求最大公约数/python
举报原因:
原因补充:

(最多只允许输入30个字)