求两个数的最大公约数,在数学上有辗转相除法。
即两个数a,b(令a>b,z(a,b)为二者最大公约数)
则z(a,b)=z(b,a%b);
因为: 设c=a%b;
也就是 a=nb+c, c = a-bn;
则c可以被z(a,b)整除,即z(a,b)=z(b,a%b);
当a%b==0时,返回b即为最大公约数。
C++程序如下:
int getmaxgys(int a,int b){
return b==0?a:getmaxgys(b,a%b);
}
求两个数的最大公约数,在数学上有辗转相除法。
即两个数a,b(令a>b,z(a,b)为二者最大公约数)
则z(a,b)=z(b,a%b);
因为: 设c=a%b;
也就是 a=nb+c, c = a-bn;
则c可以被z(a,b)整除,即z(a,b)=z(b,a%b);
当a%b==0时,返回b即为最大公约数。
C++程序如下:
int getmaxgys(int a,int b){
return b==0?a:getmaxgys(b,a%b);
}