最小公倍數 最大公約數

2021-07-02 05:07:42 字數 2171 閱讀 4557

求最小公倍數演算法:

最小公倍數

=兩整數的乘積

÷最大公約數

求最大公約數演算法

:(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

因此,3

即為最大公約數

[cpp]view plain

copy

#include

void

main()   

/*  輾轉相除法求最大公約數 */

printf("the largest common divisor:%d\n"

, a);  

printf("the least common multiple:%d\n"

, m*n/a);  

}  

⑵ 相減法

有兩整數a和b:

① 若a>b,則a=a-b

② 若a

③ 若a=b,則a(或b)即為兩數的最大公約數

④ 若a≠b,則再回去執行①

例如求27和15的最大公約數過程為:

27-15=12( 15>12 ) 15-12=3( 12>3 )

12-3=9( 9>3 ) 9-3=6( 6>3 )

6-3=3( 3==3 )

因此,3即為最大公約數

[cpp]view plain

copy

#include

void

main ( )  

/* 相減法求最大公約數 */  

⑶窮舉法

有兩整數a和b:

① i=1

② 若a,b能同時被i整除,則t=i

③ i++

④ 若 i <= a(或b),則再回去執行②

⑤ 若 i > a(或b),則t即為最大公約數,結束

改進:① i= a(或b)

② 若a,b能同時被i整除,則i即為最大公約數, 結束

③ i--,再回去執行②

有兩整數a和b:

① i=1

② 若a,b能同時被i整除,則t=i

③ i++

④ 若 i <= a(或b),則再回去執行②

⑤ 若 i > a(或b),則t即為最大公約數,結束

改進:① i= a(或b)

② 若a,b能同時被i整除,則i即為最大公約數, 結束

③ i--,再回去執行②

[cpp]view plain

copy

#include

void

main ()  

/* 窮舉法求最大公約數 */

/*  改進後的

for (t= a; t>0; t-- )    

if ( a%t == 0 && b%t ==0 )    break; */

[cpp]view plain

copy

//窮舉法求最小公倍數

for(i= a; ; i++ )  

if( i % a == 0 && i % b ==0 )     

break

;  printf("the least common multiple:%d\n"

, i )  

//多個數的最大公約數和最小公倍數

for(i= a; i>0; i-- )  

if(a%i==0&&b%i==0&&c%i==0)     

break

;  printf("the largest common divisor:%d\n"

, i);  

for(i= a; ; i++ )  

if(i%a==0&&i%b==0&&i% c==0)    

break

;  printf("the least common multiple:%d\n"

, i )  

最大公約數 最小公倍數

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

最大公約數,最小公倍數

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

最大公約數 最小公倍數

求兩個正整數的最大公約數。input 輸入資料含有不多於50對的資料,每對資料由兩個正整數 0 n1,n2 232 組成。output 對於每組資料n1和n1,計算最大公約數,每個計算結果應佔單獨一行。sample input 6 5 18 12sample output 1 6 include i...