求两个正整数的最大公约数和最小公倍数(辗转相除法与相减法)

辗转相除法:输入两个数n和m,首先判断两个数的最大值和最小值,用最大值分别除n,m,若取于余数都等于0,则为二者最小公倍数;用 n,m ,分别除最小数,若余数都为0,则最小数为二者最大公约数。
源代码:

#include 
using namespace std;
int main()
{
    int m,n,min,max;
    cout<<"请输入m,n的值 ";
    cin>>m>>n;
    if(m>n) {               //分别找出最大和最小值
        max=m;
        min=n;
    }else{
        max=n;
        min=m;
    }
    while(true){
        if(max%m==0&&max%n==0)  //用最大值分别除n,m,若取于余数都等于0,则为二者最小公倍数

        {
            cout<<"最小公倍数为 "<<max<break;
        }
        max++;             //自加
    }




    while(true){
        if(m%min==0&&n%min==0)      //用 n,m ,分别除最小数,若余数都为0,则最小数为二者最大公约数
        {
            cout<<" 最大公约数为"<<min<break;
        }
        min--;                //自减

    }
    return 0;
}

运行结果:
求两个正整数的最大公约数和最小公倍数(辗转相除法与相减法)_第1张图片
程序流程图:
求两个正整数的最大公约数和最小公倍数(辗转相除法与相减法)_第2张图片
求两个正整数的最大公约数和最小公倍数(辗转相除法与相减法)_第3张图片
相减法:相减法,即通过连续相减求得两个数的最大公约数。
如果a>b,则a=a-b;
如果a

#include

int main()

{

    int m,n,i,j;

    printf("请输入两个正整数:");

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

    int GDC(int a,int b);//声明函数 

    i=GDC(m,n);
    j=(m*n)/i;

    printf("%d%d的最大公约数为:%d\n",m,n,i);
    printf("%d%d的最小公倍数为:%d\n",m,n,j);

    return 0;

}

int GDC(int a,int b)//定义一个函数用来求最大公约数 

{

    while(a-b)//利用相减法求最大公约数 

    {

        if(a>b) a=a-b;

        else    b=b-a;

    }

    return a;

}

运行结果:
求两个正整数的最大公约数和最小公倍数(辗转相除法与相减法)_第4张图片

你可能感兴趣的:(求两个正整数的最大公约数和最小公倍数(辗转相除法与相减法))