一、主要思想:
輾轉相除法:小數賦值於大數,大數除以小數取餘賦值於小數,直到小數為0,輸出大數值便為最大公約數;兩數的乘積除以最大公約數的值為最小公倍數。
窮舉法:用兩個數分別去逐個除以1到大數之間的數字,直到餘數為零,就可得到最大公約數;用大數到兩數之積的數逐個除以兩數直到餘數為零,就可得到最小公倍數。
遞迴法:兩數相除取餘,然後餘數與除數繼續相除取餘,直到餘數為零,返回除數為最大公約數。(餘數一直與除數進行相除取餘,一直要遞推,然後回歸)
多個數求最大公約與最小公倍數:利用陣列存放資料,兩兩進行公約數與公倍數的求取。
二、**
`void f1()//輾轉相除法
c=a*b/x;
printf("最大公約數是:%d\n最小公倍數是:%d\n",x,c);
}void f2()//窮舉法
int fun_y(int x,int y)
return i;
}int fun_b(int x,int y)
return i;
}void f3(void)//遞迴法
int gys(int a,int b)
void g_many()//窮舉法求多個數的最大公約數
for(i=0;i1;i++)
for(i=0;i1;i++)
printf("這幾個數的最大公約數:%d\n最小公倍數:%d\n",p,m);} `
void f1()//輾轉相除法
c=a*b/x;
printf("最大公約數是:%d\n最小公倍數是:%d\n",x,c);
}void f2()//窮舉法
int fun_y(int x,int y)
return i;
}int fun_b(int x,int y)
return i;
}void f3(void)//遞迴法
int gys(int a,int b)
void g_many()//窮舉法求多個數的最大公約數
for(i=0;i1;i++)
for(i=0;i<=1;i++)
printf("這幾個數的最大公約數:%d\n最小公倍數:%d\n",p,m);
}
三、結果
最大公約數 最小公倍數
求最大公約數最直接的辦法是從兩數中較小數與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為正整數...