兩個數最大公約數
輾轉相除法:
在數學中,輾轉相除法,又稱歐幾里得演算法,是求最大公約數的演算法。兩個整數的最大公約數是能夠同時整除它們的最大的正整數。輾轉相除法基於如下原理:兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。
例如:
用(a,b)來表示a和b的最大公約數。
已知a,b,c為正整數,若a除以b餘c,則(a,b)=(b,c)。
求(252,105)
∵252=105×2+42 ∴(252,105)=(105,42)
∵105=42×2+21 ∴(105,42) =(42,21)
∵42=21×2 所以最大公約數為21;
兩個數的最大公約數最小公倍數
#include
#define swap(a,b) a=a^b,b=a^b,a=a^b
//輾轉相除法
int divisor(int a,int b)
int main()
n個數的最大公約數最小公倍數
最大公約數:
求出頭兩個的數最大公約數,再將它和大三個數求最大公約數直到陣列末尾形成遞迴
最小公倍數:
求出頭兩個的數最小公倍數,再將它和大三個數求最小公倍數直到陣列末尾形成遞迴
#include
#include
#define swap(a,b) a=a^b,b=a^b,a=a^b
//輾轉相除法求最大公約數
int divisor(int a,int b)
int main()
memcpy(b,a,sizeof(a));
i=0;
//求n個數的最大公約數
while(i<=n-2)
res=divi;
//求n個數的最小公倍數
i=0;
while(i<=n-2)//mult為最小公倍數,等於兩數相乘除以最大公約數
printf("%d %d",res,mult);
return
0; }
最大公約數 最小公倍數
求最大公約數最直接的辦法是從兩數中較小數與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 因此...
最大公約數 最小公倍數
求兩個正整數的最大公約數。input 輸入資料含有不多於50對的資料,每對資料由兩個正整數 0 n1,n2 232 組成。output 對於每組資料n1和n1,計算最大公約數,每個計算結果應佔單獨一行。sample input 6 5 18 12sample output 1 6 include i...