求最大公約數和最小公倍數的python程式

2021-08-27 08:42:57 字數 2296 閱讀 8791

基本要求:1.程式風格良好(使用自定義注釋模板),兩種以上演算法解決最大公約數問題,提供友好的輸入輸出。

提高要求:1.三種以上演算法解決兩個正整數最大公約數問題。

2.求3個正整數的最大公約數和最小公倍數。

#輾轉相除法

deffun1

(a,b):

if a#如果aa,b = b,a

t = a%b #大數除小數得乙個餘數賦給t

p = a*b #將兩數的乘積賦給p

while t!=0:

a = b # 當餘數不為0時,將b賦給a

b = t #將餘數賦給b

t = a%b #繼續將a除以b的餘數賦給t

print( "相除法得最大公約數為:", b ) #當餘數為0時,輸出b即為最大公約數

print( "相除法得最小公倍數:", int(p/b) ) #用兩數乘積除以最大公約數即為最小公倍數

#相減法

deffun2

(a,b):

p = a*b

while a!=b :

if a>b :

a = a-b #若a>b,將a-b的值賦給a

else :

b = b-a

print("相減法得最大公約數為:", a) #當a==b時,輸出a即為最大公約數

print("相減法得最小公倍數為:", int(p/a)) #用兩數乘積除以最大公約數即為最小公倍數

#列舉法

deffun3

(a,b):

p = a*b

t = a #將a值賦給t

while t>0 :

if a%t==0

and b%t==0 : #若a除以t的餘數和b除以t的餘數都為0時,跳出迴圈

break

t=t-1

#t>0時,每迴圈一次,t值減一

print("列舉法得最大公約數為:", t) #當跳出迴圈時,輸出t值即為最大公約數

print("列舉法得最小公倍數為:", int(p / t)) #用兩數乘積除以最大公約數即為最小公倍數

#用列舉法求三個正整數的最大公約數和最小公倍數

deffun4

(a,b,c):

p = a*b*c

if aelse :

min = b

if min>c :

min = c #找出輸入的a,b,c三個數中的最小的數賦給min

while min>0 :

if a%min==0

and b%min==0

and c%min==0 : #若a除以的餘數和b除以min的餘數和c除以min都為0時,跳出迴圈

break

min=min-1

#>0時,每迴圈一次,min值減一

print("列舉法得三個數的最大公約數為:", min) # 當跳出迴圈時,輸出min值即為最大公約數

print("列舉法得三個數的最小公倍數為:", int(p / min)) # 用兩數乘積除以最大公約數即為最小公倍數

#定義乙個主函式

defmain

(): a = int(input('請輸入第乙個整數》'))

if a>0: #判斷輸入的數是否為正整數

b = int(input('請輸入第二個整數》'))

if b>0:

fun1(a,b) #呼叫輾轉相除法求最大公約數和最小公倍數

fun2(a,b) #呼叫相減法求最大公約數和最小公倍數

fun3(a,b) #呼叫列舉法求最大公約數和最小公倍數

else:

print('輸入錯誤')

else :

print('輸入錯誤') #若輸入的不是正數,提示輸入錯誤

c = int(input('請輸入第三個整數》'))

if c>0 :

fun4(a,b,c)

else :

print('輸入錯誤')

if __name__ == '__main__':

main() #執行主函式

求最大公約數,最小公倍數

歐幾里德遞迴演算法,大數對小數取餘直到小數為0,大數為最大公約數 param m param n return static int maxcommondivisor euclid recursion int m,int n return m 劉徽兩數相減直到兩數相等,等數為最大公約數 param ...

求最大公約數和最小公倍數

本篇文章中求最大公約數的方法是輾轉相除法,又稱歐幾里德演算法 方法是用較大的數除以較小的數,求得餘數,將餘數變成除數,除數變成被除數,重複這個過程,直到餘數變成0。而求最小公倍數的方法則是用原本兩個數的乘積除以最大公約數。define crt select no warings include in...

求最大公約數和最小公倍數

輾轉相除法求最大公因數 輾轉相除法 簡單來說 兩個數,用較大的數除以較小的數,得到第一餘數,在用較小的數除以第乙個餘數,得到第二餘數,在用第二個餘數除以第一餘數,重複過程,直到到餘數為0 那麼最後乙個餘數就是這兩個數的最大公約數 舉例說明 a 36,b 10 1.36除以10得3,餘6 2.10除以...