欧几里得算法:辗转相除法(高中就学了。。。)
百度百科:
两个数的最大公约数是指能同时整除它们的最大正整数。[1]
设两数为a、b(a≥b),求a和b最大公约数 的步骤如下:
(1)用a除以b(a≥b),得 。
(2)若 ,则 ;
(3)若 ,则再用b除以 ,得 .
(4)若 ,则 ;若 ,则继续用 除以 ,……,如此下去,直到能整除为止。
其最后一个余数为0的除数即为 的最大公约数。
int GCD(int a,int b)
{
return b==0?a:GCD(b,a%b);
}