辗转相除法

2022-06-29  本文已影响0人  与时间共舞

辗转相除法(欧几里得算法)
求两个数的最大公约数和最小公倍数?
1、最大公约数
思路:大数除以小数,如果能够整数,
则小数是最大公约数,如果不能
整除,则用除数作为被除数继续
除以余数,直到能够整除,那么
除数就是最大公约数
2、最小公倍数
思路:根据公式求解
两个数的乘积
=最大公约数*最小公倍数

#include<iostream>
using namespace std;
int gcd(int x, int y){  //最大公约数 
    int t = x%y;  //求余数 
    while(t!=0){  //判断余数为0 
        x=y;        
        y=t;
        t=x%y;
    }
    return y;
} 

int lcm(int x, int y){ //最小公倍数 
    int t = gcd(x,y);
    return (x*y/t); 
    //两个数的乘积=最大公约数*最小公倍数 
} 

int main(){
    
    int a,b;
    cin>>a>>b;
    cout<<"最大公约数:"<<gcd(a,b)<<endl;
    cout<<"最小公倍数:"<<lcm(a,b)<<endl; 
    
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读