求最大公约数,过不了,不知道啥问题,用的辗转相除法

#include <stdio.h>
int main()
{int a,b,temp,m,n;
scanf("%ld%ld",&a,&b);
if(a>b)
m=a,n=b;
{
while(m%n!=0)
temp=m%n;
m=n;
n=temp;
printf("GCD(%ld,%ld)=%ld",a,b,n);
}
else m=b,n=a;
{ while(m%n!=0)
temp=m%n;
m=n;
n=temp;
printf("GCD(%ld,%ld)=%ld",a,b,n)
}
return 0;

}

用余数能懂吗