日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python辗转相除_使用辗转相除法求两个数的最大公因数(python实现)

發布時間:2023/12/14 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python辗转相除_使用辗转相除法求两个数的最大公因数(python实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數學背景:

整除的定義:

任給兩個整數a,b,其中b≠0,如果存在一個整數q使得等式

a = bq

成立,我們就說是b整除a,記做b|a.

性質1:如果c|a,c|b,且對于任意的整數m,n,則有c|ma + nb

證明: 利用上述定義進行證明

因為c|a ,c|b,所以有a = c*q1,b = c*q2,

對于任意m,n有,ma+nb = m(c*q1) + n(c*q2) = c(m*q1 + n*q2),

因為m*q1 +n*q2為整數,很顯然有 c|ma + nb .

帶余除法: 設a,b 是兩個整數,其中b > 0 ,則存在兩個唯一的整數q和r,使得

a = b*q + r, ? ? ? ? ?0≤ r < b

成立.

公因數和最大公因數的定義:

設a1,a2,a3,......,an是n個不全為0的整數,若整數d是它們之中每一個數的因數,那么d就叫做a1,a2,a3,......,an的一個公因數.這時它們的公因數只有有限個,整數a1,a2,a3,......,an的公因數中最大的一個叫做最大公因數,記做(a1,a2,a3,......,an),若(a1,a2,a3,......,an)=1,我們說a1,a2,a3,......,an互素.

定理1:設a,b,c是任意三個不全為零的整數,且 a = bq + c,其中q是整數,則(a,b) = (b,c).也就是說,a和b的最大公因數等于b和c的最大公因數.

證明: 因為(a,b)是a和b的最大公因數,所以(a,b)|a,且(a,b)|b,由于c = a - bq,所以由性質1可以知道(a,b)|c,所以可以看到,(a,b)是b,c的一個公因數,而由公因數的定義可以知道 (b,c)是b,c的最大公因數,任何公因數都是小于最大公因數的,所以(a,b) ≤ (b,c).

同樣的道理可以證明 (b,c) ≤(a,b).

因此有(a,b) = (b,c)

輾轉相除法:給任意整數 a > 0,b >0, 由帶余除法,有以下等式

a = b*q1 + r1, ? ? 0 < r1 < b,

b = r1*q2 + r2, ? ?0 < r2 < r1,

r1 = r2*q3 + r3, ? 0 < r3 < r2,

......

rn-2 = ?rn-1*qn+ rn , 0

rn-1=?rn*qn+1+?rn+1 ?,rn+1= 0

因為 b> r1 > r2 > r3 >....,故經過有限次帶余除法以后,總可以得到一個余數為0,上面rn+1= 0

由上面的定理1可以知道,(a,b) = (b,r1) =?(r2,r1) = ....= (rn-2,rn-1) = (rn-1,rn) = (rn,0) =?rn

所以要想求a,b得最大公因數,就需要不斷的使用帶余除法,直到余數為0,就可以得到a,b的最大公因數.

舉例:

使用輾轉相除法求 288 和 158 的最大公因數

288 ?= 158 * 1 + 130

158 ?= 130 * 1 + 28

130 = ?28 * 4 + 18

28 =18 * 1 + 10

18 = 10 * 1 + 8

10 = 8 * 1 + 2

8 = 2 * 4

所以(288,158) = (158,130) = (130,28) = (28,18)=(18,10)=(10,8)=(8,2)=(2,0)=2

python 實現:

遞歸

defgcd(a,b):if b == 0 : returnareturn gcd(b,a % b)

迭代

defgcd(a,b):while b !=0:

a,b= b,a%breturn a

總結

以上是生活随笔為你收集整理的python辗转相除_使用辗转相除法求两个数的最大公因数(python实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。