这么重要的算法 你了解了吗[算法]c语言 辗转相除法

#include

//辗转相除法算两个数的最大公约数

/*(eg18 12)

m        n        t

18    12

12        6        6

6        0        0

*/

int main(void)

{

    int m,n,t;

    scanf("%d%d",&m,&n);

    while(n!=0)

    {

        t=m%n;

        m=n;

        n=t;

        printf("m=%d,n=%d,t=%d\n",m,n,t);

    }

    printf("%d",m);

  return 0;

}

#include

#include

int yue(int a,int b);

int bei(int a,int b);

int yue(int a,int b)

{

    int r;

    while((r=a%b)!=0)

    {

        a=b;

        b=r;

    }

    return b;

}

int bei(int a,int b)

{

    int c;

    c=a*b/yue(a,b);

    return c;

}

int main()

{

    int a,b,c,d;

    scanf("%d%d",&a,&b);

    c=bei(a,b);

    d=yue(a,b);

    printf("最大公约数为%d\n",d);

    printf("最小公倍数为%d\n",c);

    return 0;

}

你可能感兴趣的:(这么重要的算法 你了解了吗[算法]c语言 辗转相除法)