求兩個正整數的最大公約數和最小公倍數

2021-10-16 09:18:52 字數 1409 閱讀 4563

標籤:#萌新 #0基礎 #簡約實現:

此處我們用到的是歐幾里德演算法(輾轉相除法),求兩個數的最大公約數的步驟如下:

1.先用的乙個數除的乙個數,得第乙個餘數;

2.再用第乙個餘數的乙個數,得第二個餘數;

3.又用第二個餘數第乙個餘數,得第三個餘數;

這樣逐次用後乙個數去除前乙個餘數,直到餘數是0為止。那麼,最後乙個除數就是所求的最大公約數(如果最後的除數是1,那麼原來的兩個數是互質數)。

而求最小公倍數:

兩個正整數的最小公倍數=兩個數的乘積÷兩個數的最大公約數

由於兩個數的乘積等於這兩個數的最大公約數與最小公倍數的積。這就是說,求兩個數的最小公倍數,可以先求出兩個數的最大公約數,再用這兩個數的最大公約數去除這兩個數的積,所得的商就是兩個數的最小公倍數。

**送上:

numb_1 =

int(

input

('請輸入第乙個正整數:'))

numb_2 =

int(

input

('請輸入第二個正整數:'))

'''輸入兩位正整數,稍後作比較,並輸出結果'''

numb_max =

max(numb_1,numb_2)

#取較大值賦值給變數 numb_max

numb_min =

min(numb_1,numb_2)

#取較小值賦值給變數 numb_min

i =1

#提前生成乙個引數i,作為後面的引數傳遞使用

while i !=0:

i = numb_max % numb_min #先求兩個數的餘數,並賦值給引數i

numb_max = numb_min #將較小的數傳遞(賦值)給較大的數

if i ==0:

#此處判斷餘數是否為0

e =int(

(numb_1 * numb_2)

/numb_min)

#此處求兩數最小公倍數

'''若餘數為0,則可求得兩數的最小公倍數和最大公約數'''

print

(f'這兩個正整數的最大公約數是'

)print

(f'這兩個正整數的最小公倍數是'

)break

else

: numb_min = i

#若餘數不為0,則將餘數傳遞(賦值)給較小的數,並返回到while的判斷條件,發現滿足i不等於0,繼續求新賦值的兩數numb_max和numb_min的餘數,如此類推,直到滿足i等於0,求出結果,跳出迴圈

求兩個正整數的最大公約數

基本要求 從鍵盤輸入兩個整數,輸出兩個整數的最大公約數。用c或c 語言實現程式解決問題。1.程式風格良好 使用自定義注釋模板 2.使用三種演算法解決問題 3.提供友好的輸入輸出,並進行輸入資料的正確性驗證 方法一 窮舉法 窮舉法,顧名思義,就是乙個乙個試,即遍歷兩個整數中較小的數到零的所有數,如果能...

求兩個正整數的最大公約數

求兩個正整數的最大公約數問題 版本 v1.0 主要功能 1 輾轉相除法 a b得餘數c 若c 0,則b即為兩數的最大公約數,結束 若c 0,則a b,b c,再回去執行 2 相減法 兩整數a和b 若a b,則a a b 若a b,則a 或b 即為兩數的最大公約數,結束 若a b,則再回去執行 3 窮...

求兩個正整數的最大公約數Python版

求兩個數的最大公約數我分別採用輾轉相除法,輾轉相減法,列舉法來求得。最小公倍數就是兩個數之積除以最大公約數的結果。1.將兩整數求餘 a b x 2.如果x 0 則b為最大公約數 3.如果x 0,則 a b b x 繼續從1開始執行 4.也就是說該迴圈的是否繼續的判斷條件就是x是否為0 輾轉相除法 d...