• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

针对Python的gcd有个大大的疑问!!!!求解答!!!!!小白求大神鞭挞!

class Rational(object):    def __init__(self, p, q):        self.p = p        self.q = q        def gcd(p,q):            if q==0:                return p            return gcd(q,p%q)        self.r=gcd(p,q) #这里为什么要赋值给self.r??为什么赋值给g,或者a之类的不行?这怎么解释???    def __add__(self, r):        return Rational(self.p * r.q + self.q * r.p, self.q * r.q)    def __sub__(self, r):        return Rational(self.p*r.q-r.p*self.q,self.q*r.q)    def __mul__(self, r):        return Rational(self.p*r.p,self.q*r.q)    def __div__(self, r):        return Rational(self.p*r.q,self.q*r.p)    def __str__(self):        return '%s/%s'%(self.p/self.r,self.q/self.r)    __repr__ = __str__r1 = Rational(1, 2)r2 = Rational(1, 4)print r1 + r2print r1 - r2print r1 * r2print r1 / r2这道题,print出来很正常

但是我突然想到一个问题,假如带入的是r1 = Rational(120,1)
r2 = Rational(45,1),按照gcd()可得-->gcd(120,45)-->gcd(45,120%45)-->gcd(45,30)。到这里,问题来了,最大公约数30,那么带入结果120/45,分子分母同时除以30!!好家伙!!等于4/1.5,除非是可以继续循环的,一直到15为止!
再来r1 = Rational(6,1)
r2 = Rational(16,1),按照gcd()可得-->gcd(6,16)-->gcd(16,6%16)-->gcd(16,0),即最大公约数等于6,这tm不是打脸吗!!!???小白求大神鞭挞!!!

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

我也不会。。。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!