Наименьшее общее кратное - Smallest Common Multiple
15-ый день программы "#100 Days Of Code"
Не знаю даже как правильно сформулировать задание. Если честно, то на понимание того, что от меня требовалось, ушло больше времени, чем на решение. Попробую сформулировать своими словами, а вы, если что, то загляните в ответы внизу поста.
Нам будет представлены некие два числа, а мы должны найти наименьшее кратное (т.е то число, которое делится без остатка), не только для этих чисел, но и для тех целых чисел, которые будут находиться в промежутке между ними. Например:([2, 5]) это не только для 2 и 5, но и для 3, и 4!
Большее или меньшее число находится на первой позиции мы не знаем, как и не знаем промежуток. Поэтому я решил вначале отсортировать arr по возрастанию - sort() и если промежуток равен 1 (числа рядом), то сделать сразу возврат их произведения, которое и будет наименьшим общим кратным.
arr.sort();
if(arr[1] - arr[0] === 1){
return arr[1]*arr[0];
}
Далее запускаем цикл while с циклом for внутри него, для того, чтобы перебрать все элементы между заданными числами (от большего к меньшему)for(var i = arr[1]-2; i >=arr[0]; i--)
Для проверки мы создали переменную var somNum = arr[1]*(arr[1]-1);
куда мы поместили произвольное число полученное при умножении бОльшего заданного на бОльшее - 1.
Для работы цикла while создал переменную work. ЛОна же будет прерывать его, когда значение будет найдено.
Для перебора создал переменную select
- Smallest Common Multiple и стоит посмотреть
- Как найти наименьшее кратное
function smallestCommons(arr) { arr.sort(); if(arr[1] - arr[0] === 1){ return arr[1]*arr[0]; } var work = true; var somNum = arr[1]*(arr[1]-1); var select = 0; while(work){ for(var i = arr[1]-2; i >=arr[0]; i--){ if(somNum % i === 0) select++; else break; }if(select=== arr[1]- arr[0] -1){ work = false; return somNum; }else{ select = 0; somNum +=arr[1]*(arr[1]-1); } } } smallestCommons([1,5]);
Ответы:
smallestCommons([1, 5])
return a number.
smallestCommons([1, 5])
return 60.
smallestCommons([5, 1])
return 60.
smallestCommons([1, 13])
return 360360.
smallestCommons([23, 18])
return 6056820.
Комментариев нет:
Отправить комментарий