求解疑问,求m,n的最大公约数和最小公倍数,这个哪有有问题

include <stdio.h>

int main()
{
int q,m,i,n,p;
scanf("%d,%d",&m,&n);
if(n>m)
{
i=m;
m=n;
n=i;
}
p=m*n;
for(q=n;m%q!=0||n%q!=0;q--)
p=p/q;
printf("%d,%d",q,p);
return 0;
}

最大公约数没问题,只是最小公倍数等式(p=p/q)在for循环内执行多次,导致结果错误,可在等式前添加花括号{}