亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python如何求解兩數的最大公約數

2020-02-15 23:04:49
字體:
來源:轉載
供稿:網友

題目:

給定兩個自然數,求這兩個數的最大公約數。

分析:

單看題目的話,非常簡單,我們可以循環遍歷自然數,如果能夠整除兩個自然數,就把這個數記下來,在這些記錄中找到最大的一個。
但是這樣做有幾個缺點:一是做除法計算量比較大,二是遍歷所有自然數完全沒有必要。另外,如果能夠循環,還是不要遞歸,因為Python的函數遞歸最大??臻g是1000(如果我沒有記錯的話),如果數字大一些,很容易出現爆棧。

所以在這里有兩種處理方法:

1、如果較大的自然數除較小的一個自然數,取得余數,較小的自然數和余數的最大公約數就是我們要求的值。
2、如果較大的自然數減去較小的自然數,取得差值,較小的自然數和差值的最大公約數就是我們要求的值。

基于以上兩條,我們就可以在根據定義得到的算法的基礎上進行改進,但是!減法操作當然比取余要方便很多。而且在計算機里,做位運算的速度要比加減乘除都快,所以,我寫了四個算法,具體描述在代碼的 __doc__里有注釋闡述

代碼:

def greatest_common_divisor_1(self, num1, num2):    '''    數值計算尋找最大公約數,給定兩個整數,計算其最大公約數,時間復雜度為 o(min(num1,num2)),取余運算復雜度高    '''    gbc = 1    for i in xrange(2, min(num1, num2)+1):      if num2 % i == 0 and num1 % i == 0:        gbc = i    return gbc  def greatest_common_divisor_2(self, num1, num2):    '''    輾轉相減法,時間復雜度最差為 o(min(num1,num2)),一般情況下都比這個要好。相減運算要比除法方便很多    '''    while num1 != num2:      if num1 > num2:        num1 = num1 - num2      else:        num2 = num2 - num1    return num1  def greatest_common_divisor_3(self, num1, num2):    '''    求余數法,取模運算比較麻煩,時間復雜度低 o(log max(num1, num2))    '''    while num1 != num2:      if num1 > num2:        if num1 % num2 == 0:          return num2        num1 = num1 % num2      else:        if num2 % num1 == 0:          return num1        num2 = num2 % num1    return num1  def greatest_common_divisor(self, num1, num2):    '''    求兩個數的最大公約數    綜合取余法和輾轉相減法,既能得到較好的時間復雜度,又能避免取余運算,時間復雜度穩定 o(log max(num1,num2))    如果取兩個非常大的數的話,前面的方法很容易爆棧、取余困難等等,但是該方法沒有問題    a = 999999342353200    b = 777774234    print greatest_common_divisor(a, b)    '''    factor = 1    if num1 < num2:      return greatest_common_divisor_1(num2, num1)    while num1 != num2:      if num1 & 1 is False and num2 & 1 is False: # 均為偶數        num1 = num1 >> 1        num2 = num2 >> 2        factor *= 2      elif num1 & 1 is False and num2 & 1 is True:        num1 = num1 >> 1      elif num1 & 1 is True and num2 & 1 is False:        num2 = num2 >> 1      else:        if num1 > num2:          num1 = num1 - num2        else:          num2 = num2 - num1    return factor*num1            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品亚洲精品| 91亚洲午夜在线| 国产国语videosex另类| 中国日韩欧美久久久久久久久| 午夜免费日韩视频| 国产精品视频99| 日韩高清免费在线| 久久精视频免费在线久久完整在线看| 尤物99国产成人精品视频| 亚洲美女性生活视频| 伊人男人综合视频网| 欧美久久久精品| 欧美精品激情在线| 国产精品久久久久99| 国产精品永久免费在线| 国产精品私拍pans大尺度在线| 国产精品狼人色视频一区| 日韩欧美一区二区三区| 青草青草久热精品视频在线观看| 国产精品日本精品| 国产成人精品免费视频| 久久夜色精品国产亚洲aⅴ| 亚洲成人黄色在线观看| 国产精品私拍pans大尺度在线| 久久久久久高潮国产精品视| 91视频8mav| 亚洲福利在线播放| 日韩av手机在线看| 成人性教育视频在线观看| 成人黄色免费在线观看| 久久福利视频导航| 国模gogo一区二区大胆私拍| 日韩成人在线视频| 国产精品av网站| 国产精品久久久久久久久久小说| 欧美电影免费观看电视剧大全| 97精品国产97久久久久久| 久久夜色精品国产亚洲aⅴ| 亚洲人成在线观| 欧美丰满少妇xxxxx做受| 欧美日韩国产成人高清视频| 亚洲精品一区二三区不卡| 成人免费淫片视频软件| 中文字幕日韩欧美在线| 日韩亚洲一区二区| 91亚洲国产精品| 亚洲国模精品私拍| xxx一区二区| 欧美日韩久久久久| 欧美精品久久久久久久久久| 久久精品人人做人人爽| 九九久久久久久久久激情| 欧美国产日本高清在线| 91精品国产高清| 亚洲欧美精品中文字幕在线| 国产欧美日韩精品丝袜高跟鞋| 亚洲老头老太hd| 国产精品久久久久久婷婷天堂| 欧美国产精品va在线观看| 国产精品视频在线播放| 亚洲国产精彩中文乱码av| 国产亚洲精品日韩| 日韩av成人在线观看| 国产极品精品在线观看| 亚洲精品第一国产综合精品| 91最新国产视频| 亚洲国产97在线精品一区| 日本在线精品视频| 欧美日韩美女在线观看| 91久久精品日日躁夜夜躁国产| 久久久免费av| 日本欧美一二三区| 国产免费观看久久黄| 欧美日韩在线视频一区二区| 亚洲深夜福利在线| 国产精品高潮呻吟久久av无限| 国产成人一区三区| 久久亚洲私人国产精品va| 国产精品日日摸夜夜添夜夜av| 欧美亚洲视频在线观看| 亚洲福利小视频| 精品国产电影一区| 欧美视频一区二区三区…| 久久久久久国产精品久久| 91av免费观看91av精品在线| 综合久久五月天| 国产视频精品一区二区三区| 久久这里有精品| 国产精品电影在线观看| 精品色蜜蜜精品视频在线观看| 欧美性猛交丰臀xxxxx网站| 久久精品99国产精品酒店日本| 国产日韩精品在线观看| 欧美亚洲另类制服自拍| 日本亚洲欧洲色| 九九热精品视频国产| 中文字幕日韩精品在线观看| 亚洲桃花岛网站| 亚洲精品一区中文字幕乱码| 国产日韩在线观看av| 欧美性xxxx在线播放| 国内精品久久久久久| 久久久久久久久国产| 国内精品久久久久久| 精品中文字幕在线2019| 福利二区91精品bt7086| 亚洲精品日韩在线| 国产亚洲精品久久久优势| 亚洲男人天天操| 国产经典一区二区| 久久亚洲私人国产精品va| 91久久精品日日躁夜夜躁国产| 国产免费一区视频观看免费| 欧美乱大交做爰xxxⅹ性3| 亚洲国产精品va在线看黑人动漫| 欧美在线免费看| 成人国产精品一区| 伊人亚洲福利一区二区三区| 亚洲欧洲日产国产网站| 92看片淫黄大片欧美看国产片| 疯狂做受xxxx高潮欧美日本| 亚洲乱码国产乱码精品精天堂| 亚洲无限乱码一二三四麻| www.欧美三级电影.com| 欧美成人午夜激情视频| 欧美大尺度电影在线观看| 欧美日韩在线视频首页| 午夜精品理论片| 国产精品自产拍在线观看中文| 欧美日韩爱爱视频| 97人人爽人人喊人人模波多| 亚洲精品自产拍| 宅男66日本亚洲欧美视频| 精品亚洲一区二区三区在线观看| 国产一区二区日韩精品欧美精品| 9.1国产丝袜在线观看| 久久久久久午夜| 全亚洲最色的网站在线观看| 国产欧美日韩丝袜精品一区| 日韩视频免费在线| 日韩免费在线看| 一本色道久久综合狠狠躁篇的优点| 国产精品电影在线观看| 国产亚洲精品美女久久久| 亚洲国产一区二区三区在线观看| 亚洲欧美一区二区三区情侣bbw| 中文字幕免费精品一区| 欧美激情第99页| 亚洲第一av网站| 高清亚洲成在人网站天堂| 久久久久国产精品免费| 97婷婷涩涩精品一区| 亚洲第一av网| 亚洲sss综合天堂久久| 国产精品天天狠天天看| 日韩精品中文在线观看| 欧美激情免费在线| 久久综合88中文色鬼| 久久久久久久久国产| 精品动漫一区二区| 精品久久久久久亚洲国产300| 欧美精品一本久久男人的天堂| 欧美日韩国产成人在线观看| 亚洲丁香久久久|