题解 | #最大公约数#

最大公约数

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

核心:gcb(a, b) = gcb(b, a%b)
证明:只要证明gcb(a, b) = gcb(b, a-b)即可
假设gcb(a, b) = c,证明分两步:

  • step 1:证明c是gcb(b, a-b)的公约数
    gcb(a,b) = c
    => a = k1*c, b = k2*c
    => a-b = (k1-k2)*c, 又b=k2*c
    => c是b和a-b的公约数
  • step 2:证明c是gcb(b, a-b)的最大公约数
    假设存在d>c且b=k3*d, a-b=k4*d
    => a = (k4-k3)*d, b = k3*d
    => 与c是a,b的最大公约数矛盾
    => c是b, a-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)
    

```

全部评论

相关推荐

06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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