zoukankan      html  css  js  c++  java
  • C++中用辗转相除法求两个数的最大公约数和最小公倍数

    两个数的最大公约数:不能大于两个数中的最小值,算法口诀:小的给大的,余数给小的,整除返回小的,即最大公约数,(res=max%min)==0?  max=min,min=res return min; 

    两个数的最小公倍数:等于两数之和除以两个数的最大公约数 a*b/(LCM(a,b));

    #include <iostream>
    using namespace std;
    
    
    /*求最大公约数,辗转相除法来求最小公倍数*/
    int getLCM(int a, int b)
    {
        int max = (a > b ? a : b);
        int min = (a < b ? a : b);
        int res = max%min;
        while (res)
        {
            max = min;//小的给大的
            min = res;//余数给小的
            res = max%min;
        }
        return min;//整除返回小的
    }
    
    /*求最小公倍数*/
    int getGCD(int a, int b)
    {
        //最小公倍数等于两数之积除以最大公约数
        return a*b / getLCM(a, b);
    }
    
    int main(int argc, char *argv[])
    {
        
        cout << getGCD(45, 30) << endl;
        cout << getLCM(45, 30) << endl;
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    关于面试的有意义问题
    Web测试方法总结
    alwayson05-安装sql server
    alwayson03-安装故障转移
    always on
    alwayson02-各个节点加入域
    alwayson01-搭建域环境
    undo log和redo log
    mysql事务隔离级别
    Ajax
  • 原文地址:https://www.cnblogs.com/ttss/p/4100850.html
Copyright © 2011-2022 走看看