Александра
Александра

Как лучше всего на js написать этот код?

Как написать этот код? Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23. Найдите сумму всех чисел меньше 1000, кратных 3 или 5.

СБ
Света Бабенко

var sum= 0;
for (i =0; i<= 1000; i++) {
if (i%3 == 0 || i%5 == 0)
{sum+= i}
}
alert ("Сумма чисел кратных 5 или 3 до 1000 равна " + sum)

Две палки рядом это оператор ИЛИ т. е. Если или одно или другое верно - то выполняется то что в if. Есть еще оператор И. && - при нем должно быть и то и то истинно

ОП
Олег Петров

Сумма арифметической прогрессии от 3 до 1000 с шагом 3
плюс сумма арифметической прогрессии от 5 до 1000 с шагом 5
минус сумма арифметической прогрессии от 15 до 1000 с шагом 15 (т. е. 3*5)

alert(3 * (1 + Math.floor(1000 / 3)) * Math.floor(1000 / 3) / 2 +
5 * (1 + Math.floor(1000 / 5)) * Math.floor(1000 / 5) / 2 -
15 * (1 + Math.floor(1000 / 15)) * Math.floor(1000 / 15) / 2);

И никаких циклов.

ЮП
Юлия Постникова

Лучше всего смотреть, что про это думает математика, потом браться за грубый перебор)

3 + 6 + ___ + 996 + 999 = 3 * (1 + ___ + 333)
5 + 10 + ___ + 990 + 995 = 5 * (1 + ___ + 199)

Простые арифметические прогрессии. Надо учесть, что 15 + 30 + 45 ...посчитались дважды, т. к. кратны и 3, и 5. и вычесть одну такую сумму. Ответ:

alert( (3 * 334 * 333 + 5 * 200 * 199 - 15 * 67 * 66) / 2 ); // 233168

А перебором, так:

let sum = 0;
for (let i = 0; i < 1000; i++) {
if (i % 3 == 0 || i % 5 == 0) sum += i;
}

alert (sum); // 233168

Переменную `i` в цикле обязательно надо объявлять. Оно может работать и без этого, но приводит к интересным сюрпризам с бесконечными циклами)

Похожие вопросы
Написать код на JavaScript понятным и легким способом
Что-то в голову не лезет каким образом лучше написать этот код, можно решение или подсказку?
Программирование Node. Js
JavaScript node js mineflayer что заменить чтобы роботало?
Помогите по js
Можно адекватную критику JS кода? Боковое выезжающее меню. Что можно улучшить? Как оптимизировать? Понятно ли написано?
Как избавится от конкатенации JS
JS не изменяет стили. Почему ?
Возникли проблемы с JS.
Нужна помощь с JS