是求最大公约数和最小公倍数的,可以运行但是计算结果是错的,不太懂啊

#include<stdio.h>
int main()
{
    int m,n,i,j;
    printf("Please enter two positive integers:");
    scanf("%d,%d",&m,&n);//7 8
    if(m>n||m%n==0)
    {
        printf("最大公约数是n本身:%d",n);
    
    }
    if(m<n||n%m==0)
    {
        printf("最大公约数是m本身:%d",m);
     } 
    if(n>m)
    {
        i=n%m;
        while(i)//i!=0.i不等于0. 
        n=m;
        m=i;
        i=n%m;
    }
    printf("其最大公约数为:%d",i);
    if(m>n)
    {
        i=m%n;
        while(i)
        m=n;
        n=i;
        i=m%n;
    }
    printf("其最大公约数为:%d",i);
    getchar();
    j=(m*n)/i;
    printf("其最小公倍数为%d",j);
    
    return 0;
    
 } 

19至22行改为


while(i) {
        m=n;
        n=i;
        i=m%n;
}

28-31改为

while(i) {
        m=n;
        n=i;
        i=m%n;
}