C++ C++;求给定N个数的LCM的程序

C++ C++;求给定N个数的LCM的程序,c++,asp.net,c,C++,Asp.net,C,我想找到两个以上数字的LCM 求给定N个数的LCM的C++程序 int lcm(int a, int b) { return (a/gcd(a,b))*b; } 对于gcd查看。 对于2个以上的数字,在下一个数字和上一个数字的结果上反复使用lcm。代码: int lcms(int l int * a) { int i, result; result = 1; for (i = 0; i < l; i++) result = lcm(

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

求给定N个数的LCM的C++程序

int lcm(int a, int b) { return (a/gcd(a,b))*b; }
对于
gcd
查看。 对于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;
}
int-lcms(int-l-int*a)
{
int i,结果;
结果=1;
对于(i=0;i
将N个数字存储在整数指针中,并递归调用找到LCM的方法。 如果你知道N有多大,你可以用一个循环。 由于过度饱和,您可以使用:

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

这个答案的基础是

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;
}
intgcd(intnum1,intnum2){
而(num1!=num2){
如果(num1>num2)
num1-=num2;
其他的
num2-=num1;
}
返回num1;
}
整数lcm(整数m1,整数m2){
返回值(num1/gcd(num1,num2))*num2;//如Bryan所述。
}
内部主(空){
int i=0,结果=1;

对于(i=2;它代表两个数字,a和b。这对专门询问“我想找到两个以上数字的LCM”的原始海报有何帮助?啊,我错过了两个以上的数字。我添加了一个泛化。您使用的是未初始化的堆栈变量
result
,我们还需要发送第一个和第二个元素,即
a[0]
a[1]
,因此循环应该从1开始,上升到n。
结果应该用
a[0]
初始化。顺便说一下,做得不错。