Skip to content

Instantly share code, notes, and snippets.

@Lodo4ka
Created April 10, 2018 18:06
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lodo4ka/8f0cb3cff39ee45130172be3bfb96642 to your computer and use it in GitHub Desktop.
Save Lodo4ka/8f0cb3cff39ee45130172be3bfb96642 to your computer and use it in GitHub Desktop.
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 без остатка.
@VForVogue
Copy link

VForVogue commented Jun 2, 2023

нельзя такое в начале пути писать (в начале карьерного пути...)
не бывает такого

@DarthVanster
Copy link

нельзя такое в начале пути писать (в начале карьерного пути...) такого не бывает

внатуре)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment