关闭

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

标签: pythongcd 最大公约数
644人阅读 评论(0) 收藏 举报
这个个求最大公约数的函数,利用了欧几里得算法。

欧几里得法求最大公约数:
求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) 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13242次
    • 积分:388
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论