这个求两个数最大公约数的程序哪里错了?

int main()
{
    int m, n, a,i;
    int min(int x, int y);
    scanf("%d,%d",&m,&n);
    a = min(m, n);
    for (i=a;i >sqrt(min(m,n));i--)
    {
        if (n% i == 0 && m % i == 0);
        {
            printf("%d是%d和%d的最大公约数", i, m, n);
            break;

        }

        
    }
    return 0;


}
int min(int x, int y)
{
    int z;
    if (x > y)z = y;
    else z = x;
    return(z);

}
//仅能输出2个数中较小的数而非输出最大公约数

 

第9行if后面为什么加分号?求最大公约数建议上辗转相除法。