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

2021-10-03 05:47:52 字數 1769 閱讀 4507

最大公約數

""

"最大公約數的求法:

64 48"""

x = int(input(

'x='

))y = int(input(

'y='

))if x>y:

x,y = y,x

for factor in range(x,0,-1):

if x%factor==0 and y%factor==0:

print(

'{}和{}的最大公約數是{}'.format(x,y,factor))

break

x=24

y=36

24和36的最大公約數是12

法二:2⃣️

輾轉相除法:

144 108

36108 36

0

""

"x = int(input('x='))

y = int(input('y='))

if x>y:

x,y = y,x

while x!=0:

temp = y%x

y = x

x = temp

print(y)"""

# easier edition

x = int(input(

'x='

))y = int(input(

'y='

))if x>y:

x,y = y,x

c,d = x,y

while x!=0:

y,x = x,y%x

print(

'{}和{}的最大公約數是{}'.format(c,d,y))

x=260

y=138

138和260的最大公約數是2

···

最小公倍數

法一:先求出最大公倍數,再求出最小公倍數

# 最小公倍數

# first solution

x = int(input(

'x='

))y = int(input(

'y='

))if x>y:

x,y = y,x

for factor in range(x,0,-1):

if x%factor==0 and y%factor==0:

n = x*y//factor

print(

'{}和{}的最小公倍數是{}'.format(x,y,n))

break

x=28

y=42

28和42的最小公倍數是84

法二:同樣用輾轉相除法

#second solution

x = int(input(

'x='

))y = int(input(

'y='

))if x>y:

x,y = y,x

c,d = x,y

while x!=0:

y,x = x,y%x

n = c*d//y

print(

'{}和{}的最小公倍數是{}'.format(c,d,n))

x=82

y=58

58和82的最小公倍數是2378

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

歐幾里德遞迴演算法,大數對小數取餘直到小數為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除以...