Напишите программу которая вычисляет сумму первых n натуральных чисел
Перейти к содержимому

Напишите программу которая вычисляет сумму первых n натуральных чисел

  • автор:

Суммы квадратов, суммы кубов.

Еще в древнем Египте была известна формула для суммы последовательных натуральных чисел: $$ 1+2+\ldots+n=\frac2 $$ (чтобы убедиться в этом, сложите первое слагаемое с последним, второе с предпоследним и т. д.).

Найдите формулу для суммы а) квадратов $1^2+2^2+\ldots+n^2$; б) кубов $1^3+2^3+\ldots+n^3$; в) четвертых степеней $1^4+2^4+\ldots+n^4$.

Подсказка 1

Начните эксперимента: вычислите первые несколько сумм ($1^2+2^2$, $1^2+2^2+3^2$ и т. д. хотя бы до $n=5$). После этого попробуйте найти закономерность.

Подсказка 2

Экспериментальные данные полезно записать в виде таблицы.

$n$ 1 2 3 4 5 6 7
$1^<\phantom1>+\ldots+n^<\phantom1>$ 1 3 6 10 15 28 35
$1^2+\ldots+n^2$ 1 5 14 30 55 91 140
$1^3+\ldots+n^3$ 1 9 36 100 225 784 1225
$1^4+\ldots+n^4$ 1 17 98 354 979 2275 4676

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

Подсказка 3

Если у чисел в двух строках постоянно появляются общие делители (например, 10 и 30 делятся на 10, 15 и 55 на 5, 28 и 91 на 7. ), то полезно изучить отношение этих чисел. Что за последовательности получаются? (Удобно добавить в таблицу соответствующие строки.)

Решение

Как и предлагалось в последнем указании, изучим отношение первых двух строк.

$n$ 1 2 3 4 5 6 7
$1^<\phantom1>+\ldots+n^<\phantom1>$ 1 3 6 10 15 21 28
$1^2+\ldots+n^2$ 1 5 14 30 55 91 140
$S_2/S_1$ 1 5/3 7/3 3 11/3 13/3 5

Теперь нетрудно заметить закономерность: с увеличением $n$ на 1 частное увеличивается на $2/3$, т. е. это частное равно $(2n+1)/3$. Вместе с формулой для $1+2+\ldots+n$ это дает (гипотетический) ответ $$ 1^2+2^2+\ldots+n^2=\frac2\cdot\frac3=\frac6. $$

С суммами кубов дело обстоит даже проще, чем с квадаратами — глядя на таблицу естественно предположить, что $S_3=S_1^2$, т. е. $$ 1^3+2^3+\ldots+n^3=\frac4. $$

Заметно сложнее угадать формулу для суммы четвертых степеней. В отличие от предыдущих случаев, у $S_4(n)$ практически не видно общих делителей с $S_1(n)$ (кроме двойки). Зато можно заметить, что 14 и 98 делятся на 7, 55 и 979 на 11. Посмотрим на отношение $S_4/S_2$.

$n$ 1 2 3 4 5 6
$S_2$ 1 5 14 30 55 91
$S_4$ 1 17 98 354 979 2275
$S_4/S_2$ 1 17/5 7 59/5 89/5 25

Видно, что после домножения этого отношения на 5 получится последовательность целых чисел: 5, 17, 35, 59, 89, 125. Тут уже нельзя сказать, что разность соседних чисел неизменна. Все же посмотрим на эти разности: 12, 18, 24, 30. — закономерность сразу видна!

Итак, стало понятно, какие должны быть ответы, но как их доказать?

Задумаемся над тем, что вообще значит, что какое-то выражение $P(n)$ дает формулу для суммы $1^2+\ldots+n^2$? Это значит, что $P(1)=1$, $P(2)=P(1)+2^2$ и т. д., $P(n)=P(n-1)+n^2$. То есть все сводится к быть может утомительному, но прямолинейному вычислению: $$\begin \frac6+n^2&=&\frac6=\\ &=&\frac6=\frac6. \end$$ Аналогичным образом (говоря формально, «по индукции») можно доказать найденные выше формулы для $S_3(n)$ и $S_4(n)$.

Послесловие

Видимо наиболее наглядный способ вычислить сумму $1+2+\ldots+n$ — геометрический: об этой сумме можно думать как о треугольном числе, т. е. площади «пиксельного» (составленного из единичных квадратиков) равнобедренного прямоугольного «треугольника» со стороной $n$. Из двух таких треугольников легко составить прямоугольник размера $n\times(n+1)$, откуда и получается ответ $n(n+1)/2$ (половина площади прямоугольника).

Подобным образом можно вычислить и сумму $1^2+2^2+\ldots+n^2$: ее можно проинтерпретировать как объем пирамиды из кубиков (нижний слой которой состоит из $n^2$ кубиков, следующий из $(n-1)^2$ кубиков и т. д.), после чего сложить из 6 таких пирамид параллелепипед $n\times(n+1)\times(2n+1)$. Как это сделать, можно посмотреть на сайте «Математические этюды».

Есть геометрические доказательства и у позволяющего вычислить сумму кубов замечательного равенства $1^3+2^3+\ldots+n^3=(1+2+\ldots+n)^2$. Одно из них можно посмотреть на youtube-канале Think Twice, см. также подборку «доказательств без слов» в Кванте №11 за 2017 год.

Заметим, однако, что формула для суммы четвертых степеней не раскладывается (в отличие от предыдущих) на простые линейные множители. Видимо из-за этого ее не получается найти методами геометрического суммирования и открыта она была примерно на 1 000 лет позже, чем формула для суммы кубов (известная уже в античности).

Чтобы продвинуться дальше, полезно задуматься, что мы вообще надеемся увидеть в качестве ответа. Не любое алгебраическое выражение можно разложить на достаточно простые множители, но всегда можно, наоборот, раскрыть все скобки и привести подобные. В изученных нами случаях получаются следующие многочлены от $n$: $$\begin 1^<\phantom1>+2^<\phantom1>+\ldots+n^<\phantom1>&=&\frac12n^2+\frac12n;\\ 1^2+2^2+\ldots+n^2&=&\frac13n^3+\frac12n^2+\frac16n;\\ 1^3+2^3+\ldots+n^3&=&\frac14n^4+\frac12n^3+\frac14n^2;\\ 1^4+2^4+\ldots+n^4&=&\frac15n^5+\frac12n^4+\frac13n^3-\frac1n.\\ \end$$ Практически сразу возникает гипотеза, что вообще для любого $k$ сумма $1^k+2^k+\ldots+n^k$ равна многочлену от $n$, который начинается с $\frac1n^$ (в этом выражении изучавшие анализ сразу узнают первообразную того, что мы суммируем), дальше идет $\frac12n^k$ и члены еще меньших степеней.

С алгебраической точки зрения это очень естественный переход — но самого языка алгебры, «выражений с буквами» и преобразования таких выражений, не существовало до работ Франсуа Виета (конца 16 века)! А до появления такого языка гипотезу выше практически невозможно не то что доказать — сформулировать.

В первой половине 17 века Иоганн Фаульхабер смог найти формулы для сумм $1^k+2^k+\ldots+n^k$ до $k=17$ (интересную попытку реконструкции рассуждений Фаульхабера опубликовал Дональд Кнут). Вот несколько из таких формул: $$\begin S_2(n)&=&\frac13n^3+\frac12n^2+\frac16n;\\ S_3(n)&=&\frac14n^4+\frac12n^3+\frac14n^2;\\ S_4(n)&=&\frac15n^5+\frac12n^4+\frac13n^3&-&\frac1n;\\ S_5(n)&=&\frac16n^6+\frac12n^5+\frac5n^4&-&\frac1n^2;\\ S_6(n)&=&\frac17n^7+\frac12n^6+\frac12n^5&-&\frac16n^3&+&\frac1n;\\ S_7(n)&=&\frac18n^8+\frac12n^7+\frac7n^6&-&\frac7n^4&+&\frac1n^2. \end$$ Коэффициенты при $n^$ и при $n^k$ обсуждались выше. Подумав некоторое время вы наверняка угадаете формулу для коэффициентов при $n^$ и $n^$, а быть может, и для коэффициента при $n^$.

фрагмент «Ars Conjectandi» Я. Бернулли

Возникает надежда на общую (работающую для произвольного $k$) формулу для $S_k(n)$. И такую формулу нашел в конце 17 века Якоб Бернулли. В нее входит последовательность так называемых чисел Бернулли ($B^0=1$, $B^1=1/2$, $B^2=1/6$. ), а саму формулу можно записать символически очень коротко: $$ S_k(n)=\frac-B^>. $$ Понимать эту запись следует следующим образом. Нужно раскрыть формально в выражении $(n+B)^$ скобки, после чего начать воспринимать $B^m$ не как степень переменной $B$, а как $m$-е число Бернулли. Например: $$\begin S_2(n)&=&\frac3=\\ &=&\frac3= \frac13\left(n^3+\frac32n^2+\frac36n\right). \end$$ Если поверить в эту (крайне странную, на первый взгляд) процедуру, то будет ясно и как вычислять числа Бернулли: при подстановке $n=1$ получается равенство $1=\frac<(1+B)^-B^>$, позволяющее найти $B^k$, если числа Бернулли с меньшими номерами уже известны. В таблице ниже приведены несколько первых чисел Бернулли.

Замечательным образом те же самые числа Бернулли возникают и в квадратурных формулах для вычисления приближенных значений интегралов, и при вычислении бесконечных сумм типа $1+\frac14+\frac19+\frac1+\ldots=\frac<\pi^2>6$ (т. е. значений знаменитой дзета-функции), и в комбинаторике, и в теории чисел, и в топологии.

Литература

  1. Д. Пойа. Математика и правдоподобные рассуждения (М.: Наука, 1975)
    http://ilib.mccme.ru/djvu/polya/rassuzhdenija.htm https://mathedu.ru/text/poya_matematika_i_pravdopodobnye_rassuzhdeniya_1975
    Мало где можно прочитать не о конкретной области математики, а о том, как вообще решать новую для себя математическую задачу . Подсказки и решение выше по существу следуют главе 7 этой замечательной книги.
  2. Интервью с академиком И. М. Гельфандом // Квант, 1989, № 1, 3–12
    http://kvant.mccme.ru/1989/01/akademik_izrail_moiseevich_gel.htm
    В решении выше сделана попытка объяснить, как некоторые формулы для сумм степеней мог бы искать любой человек. Интересующимся математикой может быть интересно прочитать, как такую задачу решал в школьные годы один из выдающихся математиков 20 века (собственно про это — небольшой фразмент на стр. 8–9, но все интервью интересное).
  3. В. С. Абрамович. Суммы одинаковых степеней натуральных чисел // Квант, 1973, № 5, 22–25
    http://kvant.mccme.ru/1973/05/summy_odinakovyh_stepenej_natu.htm
    Можно прочитать доказательство формулы для суммы степеней (из конца послесловия), использующее, по сути, только бином Ньютона.
  4. Г. А. Мерзон. Алгебра, геометрия и анализ сумм степеней последовательных чисел // Матем. просв., сер. 3, вып. 21 (2017), 104–118.
    https://mccme.ru/free-books/matpros_21.html
    Можно прочитать больше о разных взглядах на задачу о суммировании степеней.
  5. Р. Грэхем, Д. Кнут, О. Паташник. Конкретная математика (М.: Мир, 1998)
    В учебнике, написанном по лекциям знаменитого Дональда Кнута, обсуждается и задача о суммировании степеней и числа Бернулли.

Напишите программу которая вычисляет сумму первых n натуральных чисел

Информация

Робототехника

Информатика

Математика

Программы

Moodle

Подборка для школ
На PascalABC
Figma и Аналоги

1. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за N дней?

2. Вычислить сумму N четных чисел от X.

3. Вычислить сумму всех простых чисел от 1 до N.

4. Даны n случайных чисел в диапазоне от -40 до 0. Найти среднее арифметическое нечётных.

5. Напишите программу, определяющую сумму всех нечетных чисел от 1 до 99.

6. Составьте программу, вычисляющую A*B, не пользуясь операцией умножения. А и B любое натуральное число.

7. Дано натуральное число N. Определить, является ли оно совершенным. Совершенное число N равно сумме всех своих делителей, не превосходящих само N.

8. Вычислить произведение всех нечетных чисел от 1 до 2*N+1

9. Начальный вклад в сберкассу составил А рублей. Через сколько лет он станет больше B рублей. (Каждый год вклад увеличивается на 3%).

10. Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, кратное 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 3. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — минимальное число, кратное 3.

11. Заданы два целых числа A и B, написать программу, которая вычисляет сумму целых чисел между A и B.

12. Вывести на экран кубы чисел от A до B

13. Вывести факториал числа n. n – вводится с клавиатуры.

14. Задано натуральное число N. Найти количество натуральных чисел, не превосходящих N и не делящихся ни на одно из чисел 2,3,5.

15. Найти произведение двузначных нечетных чисел кратных 13.

16. Напечатать те из двузначных чисел которые делятся на 4, но не делятся на 6.

17. Составьте программу получения в порядке убывания всех делителей данного числа

18. Составьте программу определения наибольшего общего делителя двух натуральных чисел.

19. Составьте программу определения наименьшего общего кратного двух натуральных чисел.

20. Составьте программу, подсчитывающую количество цифр вводимого вами целого неотрицательного числа.

21. Составьте программу, определяющую максимальное из всех вводимых вами чисел. Концом ввода чисел является введенное число 0

22. Составьте программу, определяющую минимальное из всех вводимых вами чисел. Концом ввода чисел является введенное число 0. ( 0 – не входит в последовательность)

23. Найти все трехзначные числа, сумма цифр которых равна данному целому числу.

24. Найти все двузначные числа, сумма цифр которых делится на 4.

25. Написать программу, которая вводит с клавиатуры 5 дробных чисел и вычисляет их среднее арифметическое

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

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

28. Написать программу, которая проверяет, является ли целое число, введенное пользователем, простым.

29. Написать программу, которая «задумывает» число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток.

30. Вывести на экран число пи с помощью Ряда Лейбница с точностью в 10000 дробей.

31. Вводится число, найти произведение цифр.

32. Вводится последовательность чисел. Найти количество чисел, оканчивающихся на 0 или 2, или 3, или5. (0-признак окончания ввода, не входит в последовательность).

33. Найти сумму трёхзначных чисел, не кратных 2 или 3 или 5.

34. Даны два целых числа A и B (A

Программа вычисления суммы N целых чисел просто прибавляет единицу [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Вопрос вызван проблемой, которая больше не воспроизводится, или опечаткой. Хотя похожие вопросы могут быть уместны на этом сайте, решение для этого вопроса вряд ли поможет будущим посетителям. Обычно можно избежать подобных вопросов написанием и исследованием минимальной программы для воспроизведения проблемы до публикации вопроса.

Закрыт 5 лет назад .

Нужно написать программу, которая вычисляет сумму первых N целых положительных чисел. Моя программа просто прибавляет к любому числу единицу. Помогите понять что не так. С++ только начал изучать.

#include "pch.h" #include using namespace std; int main() < setlocale(LC_ALL, "Rus"); int i, n, sum = 0; cout > n; for (i = 1; i cout

Написать программу, которая вычисляет сумму первых n целых положительных чётных чисел.

Program n1;
var i,n,sum: integer;
begin
readln(n);
sum:=0;
for i:=1 to n do sum:=sum+2*i;
writeln(sum);
end.

АлександрПрофи (739) 5 лет назад

var a:array[i..10] of integer;// в массиве будет 10 чисел
i,n,sum: integer;
begin
for i:=1 to 10 do
readln(a[i]);

for i:=1 to n do
begin
if a[i]>0 then
sum:=sum+1;
end;
writeln(sum);
end.

var n:longint; begin readln(n); writeln((1+n)*n) end.

Массив тут как рыбке зонтик 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *