关于#c语言#的问题:输入两个正整数m和n,求其最大公约数和最小公倍数

输入两个正整数m和n,求其最大公约数和最小公倍数。
#include"stdio.h" 
main()
{
    int m,n,i,j;
    printf("请输入两个正整数:");
    scanf("%d%d",&m,&n);
    if(melse
      {i=n;j=m;}  
    while(             )
        i--;
    while(              )
        j++;
    printf("%d和%d的最大公约数为:%d\n",m,n,i);
    printf("%d和%d的最小公倍数为:%d\n",m,n,j);
}

#include"stdio.h" 
main()
{
    int m,n,i,j;
    printf("请输入两个正整数:");
    scanf("%d%d",&m,&n);
    if(m<n)
      {i=m;j=n;}     //i放最小数,j放最大数
    else
      {i=n;j=m;}  
    while(m%i || n%i)
        i--;
    while(j%m || j%n)
        j++;
    printf("%d和%d的最大公约数为:%d\n",m,n,i);
    printf("%d和%d的最小公倍数为:%d\n",m,n,j);
}

辗转相除法,望采纳!

#include <stdio.h>
#include <math.h>
void main()
{
    int m,n,r,gys,gbs;
    scanf("%d%d",&m,&n);
    m=abs(m);
    n=abs(n);
    gbs=m*n;
    r=m%n;
    while(r!=0)
    {
        m=n;
        n=r;
        r=m%n;
    }
    gys=n;
    gbs=gbs/gys;
    printf("%d %d\n",gys,gbs);
}