最大公约数与最小公倍数 c++

问题描述:

输入两个整数,求这两个整数的最大公约数和最小公倍数。

代码参考:

注意:最小公倍数 =(已知两个整数的乘积)/ 最大公约数

参考自 - [ 菜鸟教程]

#include<iostream>
using namespace std;

int main() {

    int a, b = 0;

    cout << "Enter the two numbers: ";
    cin >> a >> b;

    // 最大公约数
    if (a < b){
        int k = a;
        a = b;
        b = k;
    }
    int i = b;
    for (; i > 1; --i) {
        if (a % i == 0 && b % i == 0){
            cout << i << endl;
            break;
        }
    }

    // 最大公约数-另一种方法
    int a1 = a, b1 = b;
    while (a1 != b1) {
        if (a1 > b1)
            a1 -= b1;
        else
            b1 -= a1;
    }
    cout << a1 << endl;
    
    // 最大公约数-辗转相除gcd法
    if (a < b){
        int k = a;
        a = b;
        b = k;
    }
    cout << gcd(a, b) << endl;

    // 最小公倍数
    cout << a * b / i << endl;

    return 0;
}

const int &gcd(int a, int b) {
    return b ? gcd(b, a % b) : a;
}

 

posted @ 2022-03-16 10:49  achived  阅读(237)  评论(0编辑  收藏  举报