Задача:
Найти наименьшее общее кратное из предоставленных параметров, которое можно равномерно разделить на оба, а также на все последовательные числа в диапазоне между этими параметрами.
Кодпроверяет, все ли элементы имеют одинаковый наименьший совершенный делитель, и доходит до того момента, когда все элементы возвращают true.Проблема в том, что это не останавливает итерацию.Существует iterate boolean
, который в конце превращается в false, но затем в начале ему снова присваивается значение true.Есть ли способ это исправить?Или есть другой способ заставить это работать?
Код ниже настроен на итерацию 8 раз.Это точка, где это должно остановиться.Если установлено значение 9, оно просто продолжается.
Когда проблема будет устранена, жестко запрограммированный цикл будет изменен на while (iteration)
, если это нормально?
function smallestCommons(arr) {
let newArr = arr.sort();
// get the numbers between the two elements
let numbers = [];
let secondElement = arr[1];
for (let i = 0; i < secondElement; i++) {
numbers.push(newArr[1]--);
}
console.log(numbers);
// find the smallest common perfect divisor
function findCommon(array) {
let newArray = [...array]
let multiplier = newArray[0];
let product = 0;
let iterate = true;
// multiply the first element with multiplier
// and store the product
for (let i = 0; i < 8; i++) {
if (iterate) {
product = newArray[0] * multiplier++;
console.log('product', product);
console.log('multiplier', multiplier);
}
}
// check which elements of the
// array have a perfect division
// with the product
// and push the boolean results in a array,
let booleans = [];
for (j = 0; j < newArray.length; j++) {
booleans.push(product % newArray[j] === 0);
}
// count the elements that are true
let trueValues = 0;
for (let k = 0; k < booleans.length; k++) {
if (booleans[k] === true) {
trueValues++
}
}
console.log(booleans);
console.log('trueValues', trueValues);
console.log('iterate', iterate);
// if all elements are true, stop iteration.
if (trueValues === newArray.length) {
iterate = false;
}
console.log('iterate', iterate);
return product;
}
let result = findCommon(numbers);
return result;
}
console.log('result', smallestCommons([1, 5]));