c++ 求最大公約數

求兩個數的最大公約數是程序算法當中最簡單的一類,今天看書時又看到了,於是又寫了一遍;先上代碼再講原理:

template<class T>
T Max(T &a,T &b)
{
	return a>b?a:b;
}

template<class T>
T Min(T &a,T &b)
{
	return a<b?a:b;
}

int Maxyue(int test1,int test2)
{
	int a = Max(test1,test2);
	int b = Min(test1,test2);
	int redu = a%b; 
	while(redu)
	{
		a = b;
		b = redu;
		redu = a%b;
	}
	return b;
}

#include <iostream>
using namespace std;
#include <stdio.h>

int main(int argc,char** argv)
{
    int testnum1 = 4563;
	int testnum2 = 5972;

	int resultMaxyue = Maxyue(testnum1,testnum2);
	cout<<"最大公約:"<<resultMaxyue<<endl;
}
結果:3,就不截圖了,各位有興趣的可以試一下。


原理:對於兩個數字求最大公約數,那麼必然有一大一小,那麼要想讓這兩個數都能除開,無非就是小的一個可以整除,並且兩個數的差值也可以整除。怎麼樣,有沒有理解?!其實原理就是這麼簡單!!!

在求兩個數字的大小時,用了模板函數,這個很容易理解吧!!!!


發佈了33 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章