JavaScript
Как лучше всего на 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. Есть еще оператор И. && - при нем должно быть и то и то истинно
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);
И никаких циклов.
плюс сумма арифметической прогрессии от 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` в цикле обязательно надо объявлять. Оно может работать и без этого, но приводит к интересным сюрпризам с бесконечными циклами)
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` в цикле обязательно надо объявлять. Оно может работать и без этого, но приводит к интересным сюрпризам с бесконечными циклами)
Похожие вопросы
- Как в HTML (JS) написать код для подгрузки контента?
- Помогите, пожалуйста, написать js код для обновления ссылки
- Помогите написать код на JS
- Почему js код отрабатывает 1 раз?
- Что делает этот код на JS?
- Можно адекватную критику JS кода? Боковое выезжающее меню. Что можно улучшить? Как оптимизировать? Понятно ли написано?
- Не могу понять почему код на js не работает.
- Ребят помогите с кодом пожалуйста (JS, Googl Apps Sсript)
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Проверьте 2 кода ((( пожалуйста и ткните носом на ошибку. В общем 1 код работает частично, а второй вообще не работает. JS