国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python基于更相減損術實現求解最大公約數的方法

Python基于更相減損術實現求解最大公約數的方法

2021-01-27 00:36grey_csdn Python

這篇文章主要介紹了Python基于更相減損術實現求解最大公約數的方法,簡單說明了更相減損術的概念、原理并結合Python實例形式分析了基于更相減損術實現求解最大公約數的相關操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了Python基于更相減損術實現求解最大公約數的方法。分享給大家供大家參考,具體如下:

先從網上摘錄一段算法的描述如下:

更相減損法:也叫 更相減損術,是出自《 九章算術》的一種求最大公約數的算法,它原本是為 約分而設計的,但它適用于任何需要求最大公約數的場合。

《九章算術》是中國古代的數學專著,其中的“更相減損術”可以用來求兩個數的最大公約數,即“可半者半之,不可半者,副置分母、子之數,以少減多,更相減損,求其等也。以等數約之。”

翻譯成現代語言如下:

第一步:任意給定兩個正整數;判斷它們是否都是偶數。若是,則用2約簡;若不是則執行第二步。

第二步:以較大的數減較小的數,接著把所得的差與較小的數比較,并以大數減小數。繼續這個操作,直到所得的減數和差相等為止。

看完上面的描述,我的第一反應是這個描述是不是有問題?從普適性來說的話,應該是有問題的。舉例來說,如果我求解4和4的最大公約數,可半者半之之后,結果肯定錯了!后面的算法也不能夠進行!

不管怎么說,先實現一下上面的算法描述:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding:utf-8 -*-
#! python2
def MaxCommDivisor(m,n):
  # even process
  while m % 2 == 0 and n % 2 == 0:
    m = m / 2
    n = n / 2
  # exchange order when needed
  if m < n:
    m,n = n,m
  # calculate the max comm divisor
  while m - n != n:
    diff = m - n
    if diff > n:
      m = diff
    else:
      m = n
      n = diff
  return n
print(MaxCommDivisor(55,120))
print(MaxCommDivisor(55,77))
print(MaxCommDivisor(32,64))
print(MaxCommDivisor(16,128))

運行結果:

Python基于更相減損術實現求解最大公約數的方法

不用說,上面程序執行錯誤百出。那么該如何更正呢?

首先,除的2最終都應該再算回去!這樣,程序修改如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def MaxCommDivisor(m,n):
  com_factor = 1
  if m == n:
    return n
  else:
    # process for even number
    while m % 2 == 0 and n % 2 == 0:
      m = int(m / 2)
      n = int(n / 2)
      com_factor *= 2
    if m < n:
      m,n = n,m
    diff = m - n
    while n != diff:
      m = diff
      if m < n:
        m,n = n,m
      diff = m - n
    return n * com_factor
print(MaxCommDivisor(55,120))
print(MaxCommDivisor(55,77))
print(MaxCommDivisor(32,64))
print(MaxCommDivisor(16,128))

通過修改,上面程序執行結果如下

Python基于更相減損術實現求解最大公約數的方法

雖說這段程序寫出來看著有點怪怪的,但是總體的算法還是實現了。與輾轉相除等算法相比,這個在循環的層級上有一定的概率會減小。特別是最后的兩組測試數字對兒,這種情況下的效果要好一些。但是,總體上的算法的效率,現在我還不能夠給個準確的衡量。

希望本文所述對大家Python程序設計有所幫助。

原文鏈接:https://blog.csdn.net/grey_csdn/article/details/77416172

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产真实精品久久二三区 | 欧美三级电影在线播放 | 男人的天堂久久 | 亚洲精品成a人在线 | 日韩欧美一区二区三区免费观看 | 成人在线一区二区 | 久久久久久成人 | 免费av大全 | 黄色片网站视频 | 中文字幕高清 | 九九九久久久 | 国精产品一区二区三区有限公司 | 五月天婷婷激情 | 国产成人影院 | 91精品国产综合久久福利软件 | 午夜电影网站 | 欧美福利 | 久草视频在线播放 | 久久国产亚洲 | 欧美一区二区三区黄色 | 四虎影视4hu4虎成人 | 这里只有久久精品 | 午夜视频在线观看网站 | 精品国产一区二区三区性色av | 久久久久久亚洲精品 | 成人综合一区二区 | 亚洲精品福利在线观看 | 久久国产亚洲精品 | 国产成人精品一区二区三区网站观看 | 久久av资源 | 日本精品免费 | 精品久久久久久 | 欧美日韩国产一区二区三区 | 亚洲免费影院 | www.国产 | 欧美在线观看视频 | 午夜精品网站 | 国产欧美一区二区精品性色 | 涩涩涩久久久成人精品 | 黄色一级片在线观看 | 亚洲 欧美 综合 |