C++ C++;求给定N个数的LCM的程序
我想找到两个以上数字的LCM 求给定N个数的LCM的C++程序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(
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]
初始化。顺便说一下,做得不错。