题解 | 最大公约数 | 辗转相除法&更相减损术

最大公约数

http://www.nowcoder.com/practice/cf4091ca75ca47958182dae85369c82c

方法一:辗转相除法

alt

a , b 的最大公约数为 ba/b的余数 的最大公约数相等。

方法二:更相减损术

出自《九章算术》,核心思想是大数减小数,直到差和减数相等。


#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 求出a、b的最大公约数。
# @param a int 
# @param b int 
# @return int
#
class Solution:
    def gcd(self , a , b ):
        # write code here
        if a % b == 0:
            return b
        else:
            return self.gcd(b, a % b)
            
class Solution:
    def gcd(self , a , b ):
        # 两数相等直接返回
        if a == b:
            return b

        while True:
            big = max(a, b)
            small = min(a, b)
            if small * 2 == big:
                return small
            else:
                a, b = small, big - small

全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务