Victor Surozhtsev
Просветленный
(34152)
4 года назад
{ Сумма натуральных чисел до числа n включительно, если нужно просто до числа n (n>1), не включая само это число, то в цикле for надо будет исправить for i:=1 to n на for i:=1 to n-1, FreePascal: }
Var i,n:integer; s:longint; begin while true do begin write('n = '); readln(n); for i:=1 to n do s:=s+i; writeln(s) end end.
{ Тут главное с типами не запутаться, а то объявишь сумму s типом integer, введёшь n=10000 и получишь в ответе белиберду, потому что сумма ни в целочисленный тип integer, ни в другой целочисленный тип word просто не впишется - по формуле, которую тебе показал Жираф, получится 50005000, что превышает максимальные значения для этих типов. A зачем тут нужен цикл for, если есть такая замечательная формула? Чисто с дидактическими целями - надо сразу уметь пользоваться циклическими, рекурсивными и итерационными алгоритмами, а не чураться их, как чёрт ладана, а иначе цикл for тут, естественно, не нужен! Вот таким образом дальше руку и набивай... }
bruh of the Opera
Профи
(517)
4 года назад
если n - четное, то (n+1) * n/2
если n - нечетное, то (n+1) * n/2 + (n/2 + 1)
АндрейВысший разум (425151)
4 года назад
Бред сивой кобылы. Открываешь школьный учебник алгебры и читаешь раздел "арифметическая прогрессия".
АндрейВысший разум (425151)
4 года назад
n = 3, сумма равна 6.
(n+1) * n/2 = (3+1)*3/2=4*3/2=12/2=6 - правильный ответ
(n+1) * n/2 + (n/2 + 1) = (3+1)*3/2+(3/2+1) = 6+2 = 8 - ошибочный ответ. Если же деление вещественное, то получим вообще 8.5
Обращаю внимание, что * и / имеют РАВНЫЙ приоритет и потому выполняются строго слева направо.
Руслан Скрипник
Ученик
(122)
4 года назад
Кроме формулы суммы арефм. прогрессии можно создать переменную для суммы и цикл, который будет добавлять все натуральные числа до N в эту самую переменную
n = int(input('Введите максимальное число: '))
s = 0
for i in range(1, n):
----s += i
(Пример создан на языке python)