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

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

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

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

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

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

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

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

Решение

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
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
03.02.2016, 01:16
Pascal
5
6
  write('Введите N');
  readln(n);
0
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
03.02.2016, 10:20
Не понял:
Цитата Сообщение от bryton Посмотреть сообщение
b) цикл с переменной
можно отвечать или ждать новой темы?
0
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
03.02.2016, 10:24
Можно отвечать. Это часть одного и того же вопроса. Просто ответ на вопрос состоит из двух частей.
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
03.02.2016, 14:57
Вне условий задачи:
Pascal
1
2
Readln(N);
Writeln((N+1)*N div 2);
0
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
03.02.2016, 22:29
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.02.2016, 09:46
schoolteacher, я уже привёл "без цикла":
Цитата Сообщение от APALoff Посмотреть сообщение
Writeln((N+1)*N div 2);
0
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
04.02.2016, 10:27
Чуть задержался, пытаясь сформулировать недостатки моей формулы и преимущества Вашей.

Пояснения по поводу "моей" формулы:
При чётном 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
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.02.2016, 10:52
Ох уж наворотили теории... там не так все сложно, как Вы это описали.

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
Цитата Сообщение от APALoff Посмотреть сообщение
не так все сложно
- это когда знаешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2016, 12:12
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru