大家好,我正在尝试创建一个接收两个数字的 LCM 函数。这段代码中的 findCommonMultiple() 函数基本上返回一个数组,该数组包含该数字的主要因子。我在这个函数中试图做的是检查两个数组中是否有重复,如果有的话,这个数字将被推入一个新数组中。在推入一个数字后,内部循环应该中断并继续下一次迭代。如果两个数字不相等,它们都将被推送。即使其中一个数组超过了它们的索引,这种情况也会继续。在推送所有重复因子和唯一因子之后,我将开始将它们相乘并返回两个数字的 LCM。我还没有为此创建一个辅助函数,但我需要先解决这个问题。
function leastCommonMultiple(num1, num2){
var prime1 = findPrimeFactors(num1);
var prime2 = findPrimeFactors(num2);
var primes = [];
var lcm = 1;
for(var i = 0; i < prime1.length; i++){
var factor1 = prime1[i];
for(var j = i; j < prime2.length; j++){
var factor2 = prime2[j];
if(factor1 === factor2){
primes.push(factor1);
break;
} else if(factor1 === undefined && factor2 > 0){
primes.push(factor2);
} else if(factor2 === undefined && factor2 > 0){
primes.push(factor1)
} else {
primes.push(factor1);
primes.push(factor2);
break;
}
}
}
return primes;
}
编辑:所以我要添加一个测试用例。因此,如果我传递了值 26 和 24,我将得到两个数组。一个是[2, 2, 2, 3]
,另一个是[2, 13]
。此函数会将我的重复项放入新数组中,并添加所有其他不重复项,因此:[2]
首先是因为两个数组都有 2,然后[2, 2, 2, 3, 13]
将其余没有重复项的数字添加到数组中。