題目要求
編寫函數,用輾轉相除法,求24和16的最大公約數
思路分析
說到歐幾里得算法,相當陌生,這是什麼算法???
歐幾里德算法是用來求兩個正整數最大公約數的算法。古希臘數學家歐幾里德在其著作《The Elements》中最早描述了這種算法,所以被命名爲歐幾里德算法。 //百度百科
怎麼理解呢,比如 求10和15的最大公約數,在數學的一般是怎麼算的
15 /10 =1 餘 5
10 / 5 = 2 餘 0
以除數和餘數反覆做除法運算,當餘數爲 0 時,取當前算式除數爲最大公約數,所以就得出15和10的最大公約數
在比如10和20的最大公約數 20 / 10 =10餘0 即最大公約數爲10
15和35的最大公約數
35/15 = 2 餘5
15 / 5 = 3 餘0 //當餘數爲 0 時,取當前算式除數爲最大公約數,除數 懂了吧
被除數 ÷ 除數 = 商 ...取餘數
擼寫代碼
#include<stdio.h>
int abc(int u,int v) //輾轉相除法函數
{
int w; //餘數w
while(v) //當v等於0時(v=w=餘數等於0時),while不循環
{
w=u%v;
u=v;
v=w;
}
return u; //輸出最大公約數
}
int main()
{
int a=24,b=16,c;
c=abc(a,b);
printf("%d和%d的最大公約數爲%d\n",a,b,c);
return 0;
}
驗證結果
衆所周知,24和16的最大公約數爲8
多測試兩組,20和35
66和99