Created
April 10, 2018 18:06
-
-
Save Lodo4ka/8f0cb3cff39ee45130172be3bfb96642 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const smallestDivisor = (num) => { | |
const iter = (acc) => { | |
// We use 'num / 2' in the condition below, and not 'num'. | |
// This is a simple optimization: a number cannot be divided | |
// by a number larger than its half. | |
if (acc > num / 2) { | |
return num; | |
} | |
if (num % acc === 0) { | |
return acc; | |
} | |
return iter(acc + 1); | |
}; | |
return iter(2); | |
// END | |
} | |
export default smallestDivisor; | |
smallestDivisor.js | |
Реализуйте тело функции smallestDivisor, используя итеративный процесс. Эта функция должна находить наименьший делитель заданного числа. | |
Доп. условия: число, передаваемое в функцию, больше нуля; делитель должен быть больше единицы, за исключением случая, когда аргументом является единица (наименьшим делителем которой является также единица). | |
Например, наименьший делитель числа 15 это 3. | |
smallestDivisor(15); // 3 | |
smallestDivisor(17); // 17 | |
Идея алгоритма: | |
Попробуйте разделить число на 2. | |
Если число делится без остатка, то это наименьший делитель. | |
Если нет, то попробуйте следующий делитель. | |
Если ничего не делит число без остатка, то переданное число является простым, так что его наименьший делитель — оно само (не считая 1) | |
Подсказка | |
Вспомните про оператор % (modulus or остаток от деления) из урока 4. Он вычисляет остаток от деления одного операнда на другой. Например, 11%5 это 1, а 10%2 это 0. | |
Так что если x%y это 0, то y делит x без остатка. |
нельзя такое в начале пути писать (в начале карьерного пути...) такого не бывает
внатуре)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
нельзя такое в начале пути писать (в начале карьерного пути...)
не бывает такого