想求两个数字的最大公约数,下面这串代码错哪了?

软件用的dev c++
试数: 11343,128952 正确答案应该是597,我运行结果是3

include <stdio.h>

int main(void)
{
long int m, n, a, i;

scanf("%d,%d", &m, &n);
if(m<n)
    a = m;    
else
    a = n;

for(i=a-1; i>=1; i--)           //从两个数比较小的那个开始一直往小找,直到找到一个能被两个数整除的
{
    if(m%i == 0 && n%i ==0)
        
        break;
}
printf("%d", i);

return 0;

}

for(i=a-1; i>=1; i--) 这里的第一个表达式应该是 i= a
比如4 8的最大公约数是4。如果从a-1开始,4就取不到了