void swap(int *a,int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}

int GCD(int *a, int *b)
{
if(*b>*a) swap(a,b);
while(*b != 0){
*a = *a % *b;
swap(a,b);
}
return(*a);
}

int LCM(int a, int b)
{
if( a==0 || b==0)
return(0);

return((a/GCD(a,b))*b);

}

上記のような関数で最大公約数と最小公倍数出そうとしたのですが
どうしても最小公倍数が0になってしまいます。
どこが間違っているのかご教授ください