求兩個數的最大公約數是程序算法當中最簡單的一類,今天看書時又看到了,於是又寫了一遍;先上代碼再講原理:
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,就不截圖了,各位有興趣的可以試一下。
原理:對於兩個數字求最大公約數,那麼必然有一大一小,那麼要想讓這兩個數都能除開,無非就是小的一個可以整除,並且兩個數的差值也可以整除。怎麼樣,有沒有理解?!其實原理就是這麼簡單!!!
在求兩個數字的大小時,用了模板函數,這個很容易理解吧!!!!