码迷,mamicode.com
首页 > 编程语言 > 详细

Snail—算法学习之最大公约、最小公倍

时间:2015-08-02 20:06:31      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

最小公倍数和最大公约数 在学校的时候 不管学什么编程 练习总会有这个题 看起来挺简单的

其实 它就是那么的简单

在编代码之前 我们可以做一下这样的假设

有两个数  m、n

最大公约数是a

那么 m = b  * a;

        n  = c  * a;

那么 最小公倍数k = a * b * c;

                          k =  m * n / a;

所以 求出最大公约数a是关键


那说到这里 最大公约数咋求呢

公约数就是m、n都能整除的数且是最大的那个  但是不能比m、n其中一个大 必须小于等于 m、n中最小的那个数

那么就把m、n中最小的数赋值给smallNumber,大得数赋值给largeNumber, 然后从 2 到smallNumber之间遍历

value来记录他们公约数  知道循环到smallNumber 最后value 就是最大的那个公约数

那么,下面就用代码 来实现这个小小的算法  呵呵呵呵呵呵呵

//声明一个函数 求得m、n的最大公约数
int maxCommonDivide(int m,int n){
    int value,smallNumber,largeNumber;
    
    /*
    //求出最大数和最小数
    largeNumber = m > n ? m : n;
    smallNumber = m < n ? m : n;
     */
    if (m >= n) {
        smallNumber = n;
        largeNumber = m;
    }
    if (n > m) {
        smallNumber = m;
        largeNumber = n;
    }
    
    for (int i = 2; i <= smallNumber; i++) {
        if ((smallNumber % i == 0) && (largeNumber % i == 0)) {
            value = i;
        }
    }
    return value;
}

//声明并实现一个函数 根据最大公约数来求出最小公倍数
int minCommonMultiple(int m, int n){
    return m * n / maxCommonDivide(m, n);
}

int main(int argc, const char * argv[]){
    int maxCommonDivideNumber = maxCommonDivide(19, 9);
    int minCommonMultipleNumber = minCommonMultiple(19, 9);
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

Snail—算法学习之最大公约、最小公倍

标签:

原文地址:http://blog.csdn.net/qq1791422018/article/details/47209567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!