c++ 求最大公约数

来源:互联网 发布:c语言system pause 编辑:程序博客网 时间:2024/05/16 05:49

求两个数的最大公约数是程序算法当中最简单的一类,今天看书时又看到了,于是又写了一遍;先上代码再讲原理:

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,就不截图了,各位有兴趣的可以试一下。


原理:对于两个数字求最大公约数,那么必然有一大一小,那么要想让这两个数都能除开,无非就是小的一个可以整除,并且两个数的差值也可以整除。怎么样,有没有理解?!其实原理就是这么简单!!!

在求两个数字的大小时,用了模板函数,这个很容易理解吧!!!!


0 0