C语言运用函数求公倍数

#include
//编写最大公约数GCD函数
/*********Begin*********/
int GCD(int a,int b)
{
    int GCD;
    int min;
    int i;
    if(aelse{
        min=b;
    }
    for(i=min;i>=2;i--)
    {
        if(a%i==0&&b%i==0)
        {
            break;
        }
    }
    GCD=i;
    return GCD;
}
/*********End**********/ 

//编写最小公倍数LCM函数
/*********Begin*********/
long long LCM(int a,int b)
{
    long long LCM;
    int max;
    int i;
    if(a>b)
    {
        max=a;
    }
    else{
        max=b;
    }
    for(i=max;i>=max;i++)
    {
        if(i%a==0&&i%b==0)
        {
            break;
        }
    }
    LCM=i;
    return LCM;
}
/*********End**********/ 
int main(void)
int a,b;
scanf("%d %d",&a,&b);
int s;
long long x;
if(a>0&&b>0)
{
s=GCD(a,b);
x=LCM(a,b);
printf("%d %lld",s,x);
}
else{
printf("Input Error");
}
    return 0;
}


输入231232 3211222
为什么最小公倍数为负数,其他都是正确的

用 long long 也溢出了。