欧几里得求最大公约数/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中的最大公约数

def showMaxFactor(num) count = num//2: while count>1: if num%count == 0 ...
  • w1021889152
  • w1021889152
  • 2016年08月25日 09:34
  • 885

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

这个个求最大公约数的函数,利用了欧几里得算法。 欧几里得法求最大公约数: 求a和b的最大公约数 记 a mod b=c ,即a=kb+c  设a b的最大公约数为d,则a=m*d b=...
  • chendian920311
  • chendian920311
  • 2015年07月09日 13:48
  • 865

Python 最大公约数算法

Python 最大公约数算法 以下代码用于实现最大公约数算法: # Filename : test.py # 定义一个函数 def hcf(x, y): """该函数返回两个数的...
  • weixin_39142498
  • weixin_39142498
  • 2018年02月06日 13:59
  • 28

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

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

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

public class Euclid { /** * @param args */ public static void main(String[] args) { System....
  • qsl19900126
  • qsl19900126
  • 2013年03月18日 19:30
  • 958

一行代码求最大公约数(欧几里得算法)

本文要介绍的不是普通的欧几里德算法(辗转相除法),而是利用位操作实现的欧几里得算法。 利用位操作实现欧几里得算法主要有以下两个优点:1.代码量少  2.效率高。首先,欧几里德算法求最大公约数的做法是...
  • coder_panyy
  • coder_panyy
  • 2016年10月14日 12:32
  • 305

求最大公约数算法(欧几里得算法)的实现!!!

看一个例子:试找出40和64的最大公约数 64 ÷ 40 = 1 ⋯⋯ 2440 ÷ 24 = 1 ⋯⋯ 1624 ÷ 16 = 1 ⋯⋯ 816 ÷ 8 = 2 ⋯⋯ 0得到余数为0就以为着我们算...
  • czkct
  • czkct
  • 2016年03月04日 20:29
  • 329

欧几里得算法求解最大公约数和最小公倍数

欧几里得算法求解最大公约数和最小公倍数(C++ 语言)
  • luozhen07
  • luozhen07
  • 2015年07月28日 12:55
  • 1104

欧几里得的最大公约数!!!!(c/c++)

这种求最大公约数,是使用循环mod 的方法,最后的被除数就是最后的 数字(最大的公约数) 证明:     a % k*b=c     设 a 和 b 的最大的公约数为 d.     a ...
  • wretchedme
  • wretchedme
  • 2014年08月21日 17:08
  • 648

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

欧几里德算法又称辗转相除法,用于计算两个整数m, n的最大公约数。其计算原理依赖于下面的定理:     gcd(m, n) = gcd(n, m mod n) 这个定理的意思是:整数m、n...
  • franktan2010
  • franktan2010
  • 2014年07月28日 14:29
  • 704
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:欧几里得求最大公约数/python
举报原因:
原因补充:

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