Для сегодняшнего алгоритма мы собираемся написать функцию с именем findDigits
, которая будет принимать на входе целое число n
.
При нахождении числа, которое является делителем другого числа в JavaScript, вы используете оператор по модулю. Оператор по модулю возвращает остаток от деления. Если что-то делится поровну, то остаток будет равен 0. Вам дано целое число n
, и цель функции состоит в том, чтобы взять каждую цифру в этом полном целом числе и определить, является ли эта цифра делителем n
. Вернуть количество цифр, являющихся делителями n
. Приведем пример.
let n = 426;
Наша переменная n
- 426, а цифры, составляющие число, - 4, 2 и 6.
Давайте разделим 426 на каждую из этих цифр и посмотрим, какая цифра является делителем 426.
426 / 4 = 106.5 // not a whole number, therefore not a divisor 426 / 2 = 213 426 / 6 = 71
Мы видим, что две цифры, 2 и 6, являются делителями 426, поэтому функция выведет 2.
Давайте превратим это в код. Создаем наши переменные:
let digitArray = (n + "").split(''); let divisors = [];
Наша переменная digitArray
переносит наш ввод, разбивает его на отдельные цифры и помещает их в массив. Сначала мы конвертируем число в строку, объединяя его с пустой строкой. Затем мы используем метод split()
вместе с использованием ''
в качестве разделителя, чтобы мы могли разделить нашу строку на отдельные символы.
Наша переменная divisors
будет содержать все числа, которые являются делителями n
в массиве. В настоящее время он пуст.
Теперь мы перебираем наш массив digitArray
:
for(let i = 0; i < digitArray.length; i++){ let num = digitArray[i]*1; if(n % num == 0){ divisors.push(num) } }
Символы в digitArray являются строками, поэтому мы быстро конвертируем их в целые числа, умножая их на 1. Мы присваиваем это значение переменной num для использования в нашем условном выражении if.
Мы проверяем, является ли отдельная цифра делителем n
. Мы используем оператор по модулю. Если остаток равен 0, то это делитель. Мы помещаем эту цифру в наш массив divisors
.
Наконец, мы возвращаем количество цифр в n
, которые являются делителями n
, возвращая длину массива divisors
.
return divisors.length;
Вот полный код:
function findDigits(n) { let digitArray = (n + "").split(''); let divisors = []; for(let i = 0; i < digitArray.length; i++){ let num = digitArray[i]*1; if(n % num == 0){ divisors.push(num) } } return divisors.length; }
Если вы нашли этот алгоритм полезным или полезным, ознакомьтесь с другими моими статьями о решениях для алгоритмов JavaScript: