編程小白C語言 歐幾里得算法

題目要求

編寫函數,用輾轉相除法,求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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章