Требуется написать программу, которая находит натуральные числа, кратные 3 и 5 в диапазоне меньше 1000,затем выводит сумму этих чисел.Почему у меня не работает цикл?
#include<iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "ru");
int j=0;
int sum=0;
for (int i = 1000; i > j; j++)
{
if (j % 3)
{
sum + j;
}
if (j % 5)
{
sum + j;
}
}
cout << "Вот сумма чисел кратных 3 или 5 в диапазоне меньше 1000"<<sum <<endl;
}
Что- то тут даже в принятом ответе фигня. И проверка начинается с 0, хотя 0 - не натуральное число.
Вот что от вас хотят:
unsigned int trivial(unsigned int N)
{
unsigned int s = 0;
for(unsigned int j = 1; j <= N; ++j)
if (j%3 == 0 || j%5 == 0) s += j;
return s;
}
А вот куда как более быстрое, а главное - математическое решение - просто просуммировать все числа, кратные трем - как арифметическую прогрессию, добавить такую же прогрессию для 5, и вычесть - для 15, чтоб учесть числа, кратные и 3, и 5 одновременно:
unsigned int sum_k(unsigned int n) { return n*(n+1)/2; }
unsigned int sum35(unsigned int N) { return 3*sum_k(N/3)+5*sum_k(N/5)-15*sum_k(N/15); }
Можете убедиться самостоятельно, что результат одинаков.
Вы не присваиваете результат вычислений в sum, а также ваше условие не совсем верно, так как в случае, если число кратно 5 и 3, то число просуммируется два раза.
for (int i = 1000; i > j; j++)
{
if (j % 3 == 0 || j % 5 == 0)
sum += j;
}
Если вы даже исправите на sum += j
, то ваша программа всеравно будет работать неправильно, так как значение j
не меняется и, если число кратен и 3
и 5
, то вы просуммируете его два раза. Поэтому нужно:
for (int i = 3; i <= 1000; ++i)
if (i % 3 || j % 5)
sum += i;
P.S. Этот код можно и оптимизировать, но к вопросу не касается...
int sum = 0;
for (int i = 3; i < 1000; ++i)
if (!(i%3) || !(i%5))
sum += i;
Тебе нужны КРАТНЫЕ 3 или 5, так что конструкция j%3 || j%5 не будет работать. Либо как выше в примере, либо i%3==0 || i%5==0.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Недавно начала изучать с++, есть задание по обработке текстового файла такого вида:
Я пишу свой небольшй HTTP-сервер на с++В нем мне нужно обрабатывать динамические запросы
у меня проект состоит из 3-х файлов : Header - с прототипами ф-ций Source - с функциями Source1 - с выводом функций на экран Проблема в том, что я хочу написать...