Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/569: Рейтинг темы: голосов - 569, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 4
1

Найти сумму всех натуральных чисел от 1 до N

02.02.2016, 20:39. Показов 108474. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу, которая вводит натуральное число N и находит сумму всех натуральных чисел от 1 до N. Используйте сначала a)цикл с условием, а потом --b) цикл с переменной.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2016, 20:39
Ответы с готовыми решениями:

Найти сумму всех натуральных чисел от 1 до m
Найти сумму всех натуральных чисел от 1 до m используя формулу суммы членов арифметической...

Дано целое k. Найти сумму квадратов всех натуральных чисел от 1 до k. Сумма чисел не должна превышать заданное
Дано целое k. Найти сумму квадратов всех натуральных чисел от 1 до k. Сумма чисел не должна...

Найти сумму всех двухзначных четных натуральных чисел
Найти сумму всех двухзначных четных натуральных чисел (оператор repeat) Плз, помогите нубу сделать...

Найти сумму и произведение всех натуральных чисел от 1 до 50, не используя формулы прогрессий.
Найти сумму и произведение всех натуральных чисел от 1 до 50, не используя формулы арифметической и...

10
115 / 92 / 66
Регистрация: 27.04.2014
Сообщений: 307
02.02.2016, 21:10 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Program zadacha1;
var 
s,n : integer;
begin
  writeln('Введите N');
  read(n);
  s:=0;
  while  (n<>0) do
  begin
    inc(s,n);
    dec(n);
  end;
  writeln('Сумма = ',s);
end.
0
Модератор
9868 / 5236 / 3306
Регистрация: 17.08.2012
Сообщений: 16,006
03.02.2016, 01:16 3
Pascal
5
6
  write('Введите N');
  readln(n);
0
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
03.02.2016, 10:20 4
Не понял:
Цитата Сообщение от bryton Посмотреть сообщение
b) цикл с переменной
можно отвечать или ждать новой темы?
0
Модератор
9868 / 5236 / 3306
Регистрация: 17.08.2012
Сообщений: 16,006
03.02.2016, 10:24 5
Можно отвечать. Это часть одного и того же вопроса. Просто ответ на вопрос состоит из двух частей.
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
03.02.2016, 14:57 6
Вне условий задачи:
Pascal
1
2
Readln(N);
Writeln((N+1)*N div 2);
0
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
03.02.2016, 22:29 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
program zadacha1_2;    {1653672}
 var i,s,n:integer;
begin
 write('Введите  n=');
 readln(n);
 s:=0;
 for i:=1 to n do
  s:=s+i;              {или inc(s,i);}
 writeln('Сумма s=',s);
end.
Без цикла получилось чуть сложнее, но может кому пригодится:
Pascal
1
s:=(n+1)*(n div 2)+((n+1)div 2)*(n mod 2);
Добавлено через 6 минут
где: (n+1)*(n div 2) сумма без "среднего" слагаемого (при чётном n или без среднего при нечётном),
((n+1)div 2)*(n mod 2) "среднее" слагаемое (при нечётном n).
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.02.2016, 09:46 8
schoolteacher, я уже привёл "без цикла":
Цитата Сообщение от APALoff Посмотреть сообщение
Writeln((N+1)*N div 2);
0
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
04.02.2016, 10:27 9
Чуть задержался, пытаясь сформулировать недостатки моей формулы и преимущества Вашей.

Пояснения по поводу "моей" формулы:
При чётном n, например n=6, s=1+2+3+4+5+6=21
Для вычисления группируем значения попарно: первый с последним, второй с предпоследним и т.д.,
При этом сумма каждой пары будет равна n+1 (в примере это 1+6=7, 2+5=7, 3+4=7)
Всего таких пар будет n div 2 (при n=6, пар будет 3).
Итак, умножив (n+1) на (n div 2), получаем первую часть формулы: (n+1)*(n div 2), в примере это 7*3=21.
Если таким же способом вычислять значение при нечётном n, то получается очевидная, но не оптимальная формула.
При нечётном n, например n=7, s=1+2+3+4+5+6+7=28
При этом сумма каждой пары также будет равна n+1 (в примере это 1+7=8, 2+6=8, 3+5=8)
Всего таких пар будет n div 2 (при n=7, пар будет 3).
Также появляется непарное “среднее” слагаемое, которое равно (n+1) div 2 (в примере это (1+7) div 2=8 div 2=4), которое добавляется в сумму только при нечётном n (это учитывается с помощью умножения на n mod 2).
Умножив (n+1)*(n div 2) (в примере (7+1)*(7 div 2)=8*3=24) и прибавив ((n+1)div 2)*(n mod 2) (в примере ((7+1) div 2)*(7 mod 2)=(8 div 2)*1=4), получаем 24+4=28.

Для получения формулы (N+1)*N div 2 необходимо избавиться от среднего слагаемого. Для этого изменим способ группировки при нечётном n. Последнее слагаемое будем складывать с 0, первое с предпоследним, второе с “предпердпоследним“ и т.д. При этом все элементы будут парными, а их сумма будет равна n (в примере это 0+7=7, 1+6=7, 2+5=7, 3+4=7), а всего таких пар будет (n+1) div 2 (в примере это (1+7) div 2=8 div 2=4).
Умножив n на ((n+1)div 2), получаем формулу: n*((n+1) div 2) (в примере это 7*4=28).

Если представить это с помощью условного оператора, то получится:
Pascal
1
2
3
if n mod 2 =0
  then s:=(n+1)*(n div 2)         //для чётных n
  else s:=n*((n+1) div 2);         // для нечётных n
При этом видно что в обоих случаях используется одна и та же формула.
1
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.02.2016, 10:52 10
Ох уж наворотили теории... там не так все сложно, как Вы это описали.

1+2+3+..+N = S
N+..+3+2+1 = S
Складываем эти последовательности. Получаем:
(N+1)+..+(N+1)+(N+1)+(N+1) = 2*S
т.е. N*(N+1) = 2*S
Итого формула одна без всяких чётных и нечётных: S = N*(N+1)/2
1
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
04.02.2016, 12:12 11
Цитата Сообщение от APALoff Посмотреть сообщение
не так все сложно
- это когда знаешь.
0
04.02.2016, 12:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2016, 12:12
Помогаю со студенческими работами здесь

Найти сумму всех натуральных чисел до 10
Помогите пожалуйста найти сумму всех натуральных чисел до 10. CИ++

Найти сумму всех четных натуральных чисел от 1 до 100
помогите, пожалуйста, с заданием: Найти сумму всех четных натуральных чисел от 1 до 100. в for,...

Найти сумму всех натуральных чисел в заданном диапазоне
Доброе всем, время суток. Есть задачка на одном известном сайте. Нужно из одного файла взять целое...

Рекурсивно найти сумму факториалов всех натуральных чисел до n
Нужно найти сумму факториалов всех натуральных числе до n (n вводит пользователь). Проблема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru