@Evgeii

Как написать функцию с циклом от 1 до 500?

Подскажите как написать функцию с циклом в которой должны выводится все числа от 1 до 500 кратные 4 и не кратные 7 и сумма которых не делится на 10.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dimoff66
Кратко о себе: Я есть
function getNumbers() {
    var arr = [];
    for(var i = 4; i <= 500; i+=4) {
        if(i % 7 && ('' + i).split('').reduce((sum, v) => sum= +sum + +v) % 10) arr.push(i);
    }
    
    return arr;
}

console.log(getNumbers())


Если выпендриться и написать в одну строку, то
const f = () => new Array(500).fill(0).map((_,ind) => ind + 1).filter(i => !(i % 4) && i % 7 && i.toString().split('').reduce((sum, v) => sum= +sum + +v) % 10)
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Заведем переменную С, в которой будем копить сумму чисел. Пока пусть она равна 0.

Заведем пока пустой массив М, в который будем складывать подходящие числа.

Собственно, цикл:
для переменной П равной 4,
пока П не превышает 500,
на каждом шаге увеличивать П на 4.

Проверить остаток от деления П на 7:
если он равен 0 (т.е. П делится на 7), то переходим к следующему значению П и дальше не идём.

Заносим П в массив М,

Конец цикла: переходим к следующему значению П.

Тут уже цикл отщелкал, в массиве М лежат числа кандидаты. Надо проверить их сумму.
Массив можно свести к одному значению методом reduce. Или можно циклом пробежаться, складывая значения. В общем, получить сумму всех элементов массива М: СМ.
Если остаток от деления СМ на 10 равен нулю, значит СМ делится на 10. А делиться не должно. Надо выкинуть из массива М любое значение, не кратное 10. Можно самое первое для простоты, которое 4.

Выводим оставшиеся в М числа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы