gpt4 book ai didi

javascript - 使用表法查找最小公倍数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:04 24 4
gpt4 key购买 nike

使用 Table Method 找到所提供参数的最小公倍数可以除以两者,也可以除以这些参数之间范围内的所有序号。只有两个参数。对于ex [1,3],找到1,2,3的lcm。

注意 - 它可能会产生无限循环

function smallestCommons(arr) {

var nums = [];
var multiples = [];
if(arr[0]>arr[1]) {
var bigger = arr[0];
} else {
var bigger = arr[1];
}

for(var i=bigger;i>0;i--) {
nums.push(i);
console.log(i);
}console.log(nums + " nums");

var sums = 0;

while(sums != nums.length) {
for(var k=0;k<nums.length;k++) {
if(nums[k] % 2 === 0) {
nums[k] = nums[k]/2;
multiples.push(2);
} else if(nums[k] % 3 === 0) {
nums[k] = nums[k]/3;
multiples.push(3);
}else if(nums[k] % 5 === 0) {
nums[k] = nums[k]/5;
multiples.push(5);
}else if(nums[k] % 7 === 0) {
nums[k] = nums[k]/7;
multiples.push(7);
}else if(nums[k] === 1) {
break;
}else {
nums[k] = nums[k]/nums[k];
multiples.push(nums[k]);
}
}
for(var j = bigger; j>0;j--) {
sums = sums + nums[j];
}
}
var scm = [multiples].reduce(function(a,b){console.log(a*b)}); return scm
}
smallestCommons([1,5]);

最佳答案

我发现这是一个简单的解决方案,效果非常好;

  • 遍历所有可能的数字,从下限输入 (var i) 开始
  • 对于每个数字,测试每个数字在输入边界(var j)之间(包括输入边界)的整除性
  • 如果我满足所有条件,则返回它作为答案,否则将 i 递增 1,然后重试

click here for explanation of ? operator in variable initialization

function smallestCommons(arr) {


//set variables for upper and lower bounds
//incase they aren't entered in ascending order
var big = arr[0] < arr[1] ? arr[1]:arr[0],
small = arr[0] < arr[1] ? arr[0]:arr[1],
i = small;

//loop through all numbers, note the possibility of an infinite loop
while(true){


//test each number for divisibility by by both upper and lower
//bounds, as well as by all sequential numbers inbetween
for(var j = small; j <= big; j++){

if(i % j === 0){
if(j===big){
return i;
}
}else {
break;
}
}
i++;
}
}


smallestCommons([1,5]); //60

关于javascript - 使用表法查找最小公倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33208270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com