Напишите программу, которая складывает все числа от 0 до 100. Выведите результат - PullRequest
1 голос
/ 30 марта 2019

Я хочу написать программу, которая добавляет все числа от 0 до 100, но мой код не добавляет все правильно. Как добавить следующий номер к номеру, а затем распечатать сумму?

Это код, который у меня есть:

         for(int i = 0; i <= 100; i++){
           i+=i;
           println(i);
         }

Результат этого показывает 0, 2, 6, 14 ... и мне нужна сумма всех чисел от 1 до 100.

1 Ответ

3 голосов
/ 30 марта 2019

Причина, по которой вы получаете этот странный результат, заключается в том, что вы добавляете эти числа в i вместо выделенного сборщика.

int collector = 0;
for (int i = 0; i <= 100; i++) {
       collector += i;
       println(collector);
}

Если вы хотите распечатать сумму только один раз, переместите println (сборщик)) выражение вне цикла.

Существует также математическая формула для непосредственного вычисления суммы первых n чисел

Sum(1, n) = n * (n+1) / 2

В обработке:

int Sum(int n){
  return n * (n + 1) / 2;
}

формула работает , потому что числа от 1 до N можно переставить и добавить следующим образом:

 (1 + N) + (2 + N-1) + (3 + N-2) + . . . . + (N + N/2+1) = total

для N = 100:

 (1 + 100) + (2 + 99) + (3 + 98) + . . . . + (50 + 51) = 5050
   101     +   101    +   101    + . . . . +    101    = 5050
...