求两整数最大公约数比较常用,我们可以自定义函数gcd使用:
int gcd(int a,int b)
{
int r;
while(b>0) //推荐使用,不必再讨论ab的输入大小情况
{ //时间复杂度为O(logN)
r=a%b;
a=b;
b=r;
}
return a;
}
或用三目运算符简化:
int gcd(int a,int b)
{ b>0?gcd(b,a%b):a)}
如编写程序输入一个分数然后将其化为最简形式,就用到了gcd(先求分子分母最大公因数,然后同除它)
同样如果要求两个数的最小公倍数:为这两数乘积除以其最大公约数。