最大公约数
假设有两个数a,b
1、感觉不错(推荐使用)
int gongys(int a,int b)
{
int temp;
while(a%b!=0)
{
temp=b;
b=a%b;
a=temp;
}
return b;
}
2、这里使用有条件限制,a是要大于b的,要化为正数(使用繁琐)
int gongys1(int a, int b){
a = abs(a);
b = abs(b);
if (a<b)
{
a = a^b;
b = a^b;
a = a^b;
}
int temp = a - b;
while (temp != b&&temp!=0)
{
if (temp > b)
{
a = temp;
}
else
{
a = b;
b = temp;
}
temp = a - b;
}
if (temp == 0)
return a;
return temp;
}
3、穷枚举(不推荐,根据原理推导)
int gongys2(int a, int b)
{
a = abs(a);
b = abs(b);
if (a < b)
{
a = a^b;
b = a^b;
a = a^b;
}
for (int i = b; i >= 2;--i)
{
if (a%i==0&&b%i==0)
{
return i;
}
}
return 1;
}