用于查找给定N数的LCM的C ++程序

时间:2013-04-27 10:11:08

标签: c++ asp.net c

我想找到两个以上数字的LCM

查找给定N数的LCM的C ++程序

3 个答案:

答案 0 :(得分:3)

int lcm(int a, int b) { return (a/gcd(a,b))*b; }

gcd查看Euclid algorithm。 对于超过2个数字,请在下一个数字和前一个数字上迭代使用lcm。在代码中:

int lcms(int l int * a)
{
        int     i, result;
        result = 1;
        for (i = 0; i < l; i++) result = lcm(result, a[i]);
        return result;
}

答案 1 :(得分:0)

将N个数字存储在整数指针中,并递归调用找到LCM的方法。 如果你知道N有多大,你可以用一个循环来做。 由于过度使用,您可以使用:

int lcm(int a, int b) { return (a/gcd(a,b))*b; }

答案 2 :(得分:0)

这个答案的基础是

num1 * num2 = lcm(num1,num2)* gcd(num1,num2) 所以我认为代码应该像这样

int gcd(int num1, int num2){

    while(num1 != num2){
        if(num1 > num2)
            num1 -= num2;
        else
            num2 -= num1;
    }
    return num1;
}

int lcm(int num1, int num2){
    return (num1/gcd(num1, num2))*num2;  // as mentioned by Bryan above.
}

int main(void){

    int i =0, result = 1;

    for(i=2 ;i<=n; i++){ // n is the upper limit
                         // be sure to check limits of data types.

        result= lcm(result, i);
    }
 // print the result;

    return 0;
}

我刚刚重新解释了bryan给出的答案,我正在解决project-euler的问题5,想到了即兴的答案。 :)