Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given a positive integer n. The task is to find the sum of the sum of square of first n natural number.
Examples :
Input : n = 3 Output : 20 Sum of square of first natural number = 1 Sum of square of first two natural number = 1^2 + 2^2 = 5 Sum of square of first three natural number = 1^2 + 2^2 + 3^2 = 14 Sum of sum of square of first three natural number = 1 + 5 + 14 = 20 Input : n = 2 Output : 6
Method 1: O(n) The idea is to find sum of square of first i natural number, where 1 <= i <= n. And then add them all.
We can find sum of squares of first n natural number by formula: n * (n + 1)* (2*n + 1)/6
Below is the implementation of this approach:
C++
#include <bits/stdc++.h>
using namespace std;
int findSum(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
sum += ((i * (i + 1) * (2 * i + 1)) / 6);
return sum;
}
int main()
{
int n = 3;
cout << findSum(n) << endl;
return 0;
}
Java
class GFG {
static int findSum(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
sum += ((i * (i + 1)
* (2 * i + 1)) / 6);
return sum;
}
public static void main(String[] args)
{
int n = 3;
System.out.println( findSum(n));
}
}
Python3
def findSum(n):
summ = 0
for i in range(1, n+1):
summ = (summ + ((i * (i + 1)
* (2 * i + 1)) / 6))
return summ
n = 3
print(int(findSum(n)))
C#
using System;
public class GFG {
static int findSum(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
sum += ((i * (i + 1) *
(2 * i + 1)) / 6);
return sum;
}
static public void Main()
{
int n = 3;
Console.WriteLine(findSum(n));
}
}
PHP
<?php
function findSum( $n)
{
$sum = 0;
for ($i = 1; $i <= $n; $i++)
$sum += (($i * ($i + 1) *
(2 * $i + 1)) / 6);
return $sum;
}
$n = 3;
echo findSum($n) ;
?>
Javascript
<script>
function findSum(n)
{
return (n * (n + 1) * (n + 1) * (n + 2)) / 12;
}
let n = 3;
document.write(findSum(n) + "<br>");
</script>
Time Complexity : O(n)
Auxiliary Space : O(1)
Method 2: O(1)
Mathematically, we need to find, Σ ((i * (i + 1) * (2*i + 1)/6), where 1 <= i <= n
So, lets solve this summation,
Sum = Σ ((i * (i + 1) * (2*i + 1)/6), where 1 <= i <= n
= (1/6)*(Σ ((i * (i + 1) * (2*i + 1)))
= (1/6)*(Σ ((i2 + i) * (2*i + 1))
= (1/6)*(Σ ((2*i3 + 3*i2 + i))
= (1/6)*(Σ 2*i3 + Σ 3*i2 + Σ i)
= (1/6)*(2*Σ i3 + 3*Σ i2 + Σ i)
= (1/6)*(2*(i*(i + 1)/2)2 + 3*(i * (i + 1) * (2*i + 1))/6 + i * (i + 1)/2)
= (1/6)*(i * (i + 1))((i*(i + 1)/2) + ((2*i + 1)/2) + 1/2)
= (1/12) * (i * (i + 1)) * ((i*(i + 1)) + (2*i + 1) + 1)
= (1/12) * (i * (i + 1)) * ((i2 + 3 * i + 2)
= (1/12) * (i * (i + 1)) * ((i + 1) * (i + 2))
= (1/12) * (i * (i + 1)2 * (i + 2))
Below is the implementation of this approach:
C++
#include <bits/stdc++.h>
using namespace std;
int findSum(int n)
{
return (n * (n + 1) * (n + 1) * (n + 2)) / 12;
}
int main()
{
int n = 3;
cout << findSum(n) << endl;
return 0;
}
Java
class GFG {
static int findSum(int n)
{
return (n * (n + 1) *
(n + 1) * (n + 2)) / 12;
}
public static void main(String[] args)
{
int n = 3;
System.out.println(findSum(n) );
}
}
Python3
def findSum(n):
return ((n * (n + 1) * (n + 1)
* (n + 2)) / 12)
n = 3
print(int(findSum(n)))
C#
using System;
class GFG {
static int findSum(int n)
{
return (n * (n + 1) * (n + 1)
* (n + 2)) / 12;
}
static public void Main()
{
int n = 3;
Console.WriteLine(findSum(n) );
}
}
PHP
<?php
function findSum($n)
{
return ($n * ($n + 1) *
($n + 1) * ($n +
2)) / 12;
}
$n = 3;
echo findSum($n) ;
?>
Javascript
<script>
function findSum($n)
{
return (n * (n + 1) *(n + 1) * (n + 2)) / 12;
}
n = 3;
document.write(findSum(n)) ;
</script>
Time Complexity : O(1)
Auxiliary Space : O(1)
Last Updated :
24 Dec, 2022
Like Article
Save Article
Онлайн калькуляторы
Calculatorium.ru — это бесплатные онлайн калькуляторы для самых разнообразных целей: математические калькуляторы,
калькуляторы даты и времени, здоровья, финансов. Инструменты для работы с текстом. Конвертеры. Удобное решение различных задач — в учебе, работе, быту.
Актуальная информация
Помимо онлайн калькуляторов, сайт также предоставляет актуальную информацию по курсам валют и
криптовалют, заторах на дорогах, праздниках и значимых событиях, случившихся в этот день.
Информация из официальных источников, постоянное обновление.
В данном уроке для начинающих программистов рассмотрим вычисление суммы квадратов первых N натуральных чисел. Будет приведено два способа решение данной задачи.
Задача поиска суммы квадратов чисел — это классический пример упражнения для закрепления школьниками или студентами раздела программирования Циклы.
Условие задачи: Найти сумму квадратов первых N натуральных чисел.
Рассмотрим два различных способа (алгоритма) решения.
Вычисление суммы квадратов чисел с использованием операции умножения
Первый и самый очевидный способ решения — суммирование в отдельную переменную квадратов числа i в цикле от i = 1 до N.
Приведем алгоритм вычисления суммы квадратов первых N натуральных чисел на псевдокоде:
|
begin sum := 0; for i := 1 to n do begin j := i * i; sum := sum + j; end Вывод sum; end |
Поясним код. Сначала объявляется переменная sum = 0 (строка 2) — в неё мы будем суммировать вычисленные квадраты натурального числа i. Затем в цикле for от 1 до N (строки 3-7) производится вычисление квадрата числа i и сохранение вычисленного результата в переменную j (строка 5), а после j прибавляется к sum (строка 6). В конце, когда все итерации цикла for будут выполнены — вычисление суммы будет завершено. Результат можно вывести на экран (строка 
Ниже представлена реализация алгоритма, написанного на псевдокоде. Данный код вы можете использовать при программировании на языках C (Си), C++, C#, Java. Всё будет работать.
|
int n = 3; int sum = 0; for (int i = 1; i <= n; i++) { int j = i * i; sum = sum + j; } |
Шестую и седьмую строчки можно заменить одним эквивалентным, более компактным и удобным оператором:
Используя его, мы также избавляемся от необходимости объявления дополнительной переменной j.
Вычисление суммы квадратов чисел без использования операции умножения
Второй способ поиска суммы квадратов первых N натуральных чисел довольно своеобразен: он более громоздкий, чем первый, но зато имеет свою особенность.
В процессе вычисления квадратов чисел и их суммы не используется операция умножения! Код второго способа представлен ниже:
|
int n = 3; int k = 1; int l = 0; int sum = 0; while (k < (n + n)) { l = l + k; sum = sum + l; k = k + 2; } |
Спасибо за прочтение статьи!
|
10 / 9 / 4 Регистрация: 02.10.2016 Сообщений: 62 |
|
|
1 |
|
|
11.10.2016, 12:24. Показов 111909. Ответов 9
Формула есть
0 |
|
543 / 486 / 104 Регистрация: 05.05.2014 Сообщений: 1,110 |
|
|
11.10.2016, 12:36 |
2 |
|
1 |
|
Диссидент 27483 / 17170 / 3784 Регистрация: 24.12.2010 Сообщений: 38,683 |
|
|
11.10.2016, 13:50 |
3 |
|
Решение Соображения размерности подсказывают, что скорее всего сумма будет описываться кубическим многочленом.
4 |
|
Регистрация: 23.10.2013 Сообщений: 5,076 Записей в блоге: 8 |
|
|
11.10.2016, 16:19 |
4 |
|
доказать, что доказательство методом математической индукции шаг 1. при n = 1 имеем шаг 2. что и требовалось доказать
1 |
|
10 / 9 / 4 Регистрация: 02.10.2016 Сообщений: 62 |
|
|
11.10.2016, 17:07 [ТС] |
5 |
|
Мне не доказать(хотя спасибо), мне вывести ее, откуда она получилась.
0 |
|
Регистрация: 23.10.2013 Сообщений: 5,076 Записей в блоге: 8 |
|
|
11.10.2016, 18:14 |
6 |
|
Выше уважаемый Байт указал путь по которому
1 |
|
Диссидент 27483 / 17170 / 3784 Регистрация: 24.12.2010 Сообщений: 38,683 |
|
|
11.10.2016, 18:21 |
7 |
|
уважаемый Байт указал путь по которому выводится эта формула. Должен признаться, что этот путь не самый лучший. В ссылке, приведенной уважаемым 8-BITOV в посте 2, рассматривается значительно более интересный и поучительный подход…
0 |
|
Регистрация: 23.10.2013 Сообщений: 5,076 Записей в блоге: 8 |
|
|
11.10.2016, 19:04 |
8 |
|
Байт
1 |
|
6354 / 4062 / 1510 Регистрация: 09.10.2009 Сообщений: 7,550 Записей в блоге: 4 |
|
|
12.10.2016, 02:11 |
9 |
|
Можно вывести, и не доказывать по индукции. Для этого нужно знать суммы всех степеней натуральных чисел, меньших чем 2, т.е. сумму арифметической прогрессии 1+2+3+…+n
5 |
|
3971 / 2950 / 894 Регистрация: 19.11.2012 Сообщений: 6,063 |
|
|
12.10.2016, 05:45 |
10 |
|
Можно вывести, и не доказывать по индукции. И все равно в вашем доказательстве есть индукция, помеченная многоточием.
1 |
Мой основной вопрос заключается в следующем: как найти сумму квадратов $%n$% первых натуральных чисел?
Мои размышления привели меня к одной интересной теореме: Faulhaber’s formula. Известно, что $%1^k+2^k+ldots+n^k=P_{k+1}(n)$% — полином от $%n$% $%(k+1)$%-й степени (***). Для нашей задачи имеем:
$%1^2+2^2+ldots+n^2=a+bn+cn^2+dn^3.$% Далее решается незамысловатая СЛУ
$$left{
begin{aligned}
0=&a\
1^2=&a+bcdot1+ccdot1^2+dcdot1^3\
1^2+2^2=&a+bcdot2+ccdot2^2+dcdot2^3\
1^2+2^2+3^2=&a+bcdot3+ccdot3^2+dcdot3^3\
end{aligned}
right. $$
Откуда имею $%a=0,,b=frac16,,c=frac12,,d=frac13$%, т.е. $$P_3(n)=frac{n(n+1)(2n+1)}{6}.$$
Мои дополнительные вопросы:
1) А какие вы знаете способы нахождения суммы квадратов $%n$% первых натуральных чисел?
2) Как доказать факт *** ?


Сообщение было отмечено echs как решение

