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

2021-10-19 09:37:42 字數 1495 閱讀 8617

例題:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

tip:兩個數的最大公約數 x 最小公倍數 = m x n。

/程式分析:利用輾除法。/

/* 除數變被除數 /

/ 餘數變除數 */

#include

"stdio.h"

main()

a=num1;b=num2;

while

(b!=0)

/*利用輾除法,直到b為0為止*/

printf

("約數: %d\n"

,a);

printf

("倍數: %d\n"

,num1*num2/a)

;return0;

}

顯示

彙編

2: main()

3: 00401099 jmp main+6dh (0040107d)

21: printf(「約數: %d\n」,a);

0040109b mov ecx,dword ptr [ebp-4]

0040109e push ecx

0040109f push offset string 「\xd4\xbc\xca\xfd: %d\n」 (00425028)

004010a4 call printf (00401170)

004010a9 add esp,8

22: printf(「倍數: %d\n」,num1*num2/a);

004010ac mov eax,dword ptr [ebp-0ch]

004010af imul eax,dword ptr [ebp-10h]

004010b3 cdq

004010b4 idiv eax,dword ptr [ebp-4]

004010b7 push eax

004010b8 push offset string 「\xb1\xb6\xca\xfd: %d\n」 (0042501c)

004010bd call printf (00401170)

004010c2 add esp,8

23:24: return 0;

004010c5 xor eax,eax

25: }

004010c7 pop edi

004010c8 pop esi

004010c9 pop ebx

004010ca add esp,54h

004010cd cmp ebp,esp

004010cf call __chkesp (004011f0)

004010d4 mov esp,ebp

004010d6 pop ebp

004010d7 ret

最大公約數 最小公倍數

求最大公約數最直接的辦法是從兩數中較小數與2之間的所有整數中乙個乙個的找。但這個方法有點浪費。有兩種有名的方法 1.輾轉相除法2.更相減損之術這兩種方法比較有名,而且現在人教版的高中數學中已經介紹了這兩種方法。下面這個是第2個,因為它只需要加減法就可以,效率高。int maxfactor unsig...

最小公倍數 最大公約數

求最小公倍數演算法 最小公倍數 兩整數的乘積 最大公約數 求最大公約數演算法 1 輾轉相除法 有兩整數a和 b a b得餘數c 若c 0,則 b即為兩數的最大公約數 若c 0,則 a b,b c,再回去執行 例如求27和 15的最大公約數過程為 27 15 餘12 15 12餘3 12 3餘0 因此...

最大公約數,最小公倍數

兩個數最大公約數 輾轉相除法 在數學中,輾轉相除法,又稱歐幾里得演算法,是求最大公約數的演算法。兩個整數的最大公約數是能夠同時整除它們的最大的正整數。輾轉相除法基於如下原理 兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如 用 a,b 來表示a和b的最大公約數。已知a,b,c為正整數...