辗转相除法

辗转相除法(欧几里得算法)
求两个数的最大公约数和最小公倍数?
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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容