Как найти сумму квадратов чисел в питоне

Начал изучать Python, столкнулся со следующей проблемой.
Условия задачи следующие:

По данному натуральному n вычислите сумму 1²+2²+3²+...+n².

У меня получился такой код, однако он не выводит верные значения. В чем может быть ошибка? Использовать нужно только while, без использования for / range:

n = int(input())
i = 0
sum = 0
while i < n:
    i = (i + 1)**2
    sum = i + n**2
print(sum)

MaxU - stand with Ukraine's user avatar

задан 27 янв 2019 в 10:31

user324828's user avatar

2

n = int(input())
i = 1 # начинать с нуля не имеет смысла, т.к. 0^2 = 0
sum = 0

# наш цикл должен работать так же, как и for i in range(1, n+1). Поэтому условие именно такое, а на каждой итерации увеличиваем i на 1
while i <= n:
    sum += i**2 # добавляем квадрат этого числа к сумме 
    i += 1 
print(sum)

ответ дан 27 янв 2019 в 10:36

XxX's user avatar

XxXXxX

6733 серебряных знака12 бронзовых знаков

4

Использовать нужно только while

while True:
    print( n * (n + 1) * (2*n + 1) / 6 )
    break

ответ дан 26 авг 2020 в 0:34

OPTIMUS PRIME's user avatar

OPTIMUS PRIMEOPTIMUS PRIME

27.1k3 золотых знака22 серебряных знака48 бронзовых знаков

2

x = int(input())
n = 0
y = 0
while n < x:
    y = y + (n + 1)**2
    n = n + 1
print(y)

ответ дан 25 авг 2020 в 13:02

user404236's user avatar

user404236user404236

651 серебряный знак7 бронзовых знаков

2

Первая ошибка:

В цикле

while i < n:

вы ожидаете, что значения переменной i будут постепенно 0, 1, 2, … n-1. Но непосредственно в первой команде цикла

    i = (i + 1)**2

переменную i изменяете.

Нужно использовать другую переменную, например

    square = (i + 1)**2

и значение переменной i поднять как последнюю команду цикла:

    i = i + 1     # или  i =+ 1

Вторая и третья ошибка:

    sum = i + n**2
  • В предыдущей команде вы уже вычислили квадрат очередного числа и присвоили его переменной (теперь уже с именем) square. Значит, вместо n**2 нужно использовать square.

  • Вы хотите постепенно прибавлять к переменной sum, а не i. Значит, вместо i нужно использовать sum.

      sum = sum + square     # или  sum += square
    

Ваша программа после применения правок:

n = int(input())
i = 0
sum = 0
while i < n:
    square = (i + 1)**2
    sum = sum + square      # или  sum += square
    i = i + 1               # или    i += 1
print(sum)

ответ дан 25 авг 2020 в 14:26

MarianD's user avatar

MarianDMarianD

14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков

0

Без while можно.

a = int(input())
sum = 0
for i in range(1, a + 1):
    sum += i ** 2

print(sum)

ответ дан 22 мар 2020 в 15:59

user377760's user avatar

1

In this tutorial, you will learn how to create a program to calculate the sum of squares of first N natural numbers. To execute this program, we will be using the concept of loops in Python. You must know this concept before moving further.

For a positive integer N, the task is to find the value of,

1² + 2² + 3² + 4².....+ N²

The program should accept the following input, look at the sample input and output below,

Input– enter n: 13

Output– sum of square of first 13 natural numbers: 819

For executing this task, we can follow two approaches:

  1. Using loops
  2. Using formula

Approach 1: Using loops

In this approach, we will use the concept of loops to find the squares of the first n numbers and we will keep on adding the numbers to get the final sum.

Algorithm

Step 1– Define a function to find the sum of squares

Step 2– Declare a variable that will store the sum

Step 3– Define a loop that will run n times

Step 4– Inside the loop update the value of the variable which will store the sum of squares

Step 5– Calculate the square of each number before adding it to the sum

Step 6- Return the value of s

Step 7- Take input of n from the user

Step 8- Pass the input as a parameter in the function

Step 9– Display the result returned by the function

Python Program 1

Look at the complete program given below to understand the implementation of the approach.

def SumofSquares(n):
    s=0
    for i in range(n+1):
        s+=i**2
    return s

#input
n=int(input("enter n: "))
print("sum of squares of first {} natural numbers: ".format(n),SumofSquares(n))

enter n: 20
sum of squares of first 20 natural numbers: 2870

The operator ** is used to calculate exponents, i**2 is the same as i²

The format() is a function for handling strings that permits you to do variable substitutions and data formatting. Here, we have used this function to print the value of n in place of {} in the print statement.

Approach 2: Using Formula

In mathematics, there is a formula to calculate the sum of squares of first n numbers. We can directly put this formula to calculate our result. This will eliminate the need for a loop in our program.

sum of squares of first n natural numbers = (n*(n+1)*(2n+1))/6

Algorithm

Step 1- Define a function to calculate the sum of squares

Step 2- Use the formula mentioned above to calculate the sum of squares of n natural numbers

Step 3– Return the value calculated above

Step 4– Take input of n from the user

Step 5– Call the function to display the result

Python Program 2

Look at the complete program given below to understand the implementation of the approach.

def SquareSum(n) :
    return (n * (n + 1) * (2 * n + 1)) // 6
  
n=int(input("enter N: "))
print("Sum of squares of first {} natural numbers: ".format(n),SquareSum(n))

enter N: 10
Sum of squares of first 10 natural numbers: 385

The format() function is used in the same way as mentioned above to display the value of n in place of {} in the print statement.

Conclusion

In this tutorial, we have learned two ways by which we can calculate the sum of the squares of the first N natural numbers. One is by using a loop that will calculate the squares of N numbers and add them up to give the final result. Second, we can directly use the formula to get the value of the sum of the squares of N natural numbers.

0 / 0 / 0

Регистрация: 10.02.2021

Сообщений: 10

1

01.03.2021, 07:16. Показов 12016. Ответов 11


Студворк — интернет-сервис помощи студентам

Найти сумму квадратов чисел от m до n.



0



NoBodys

1 / 1 / 0

Регистрация: 07.11.2019

Сообщений: 168

01.03.2021, 07:35

2

Python
1
2
3
4
5
for i in range (m,n+1):
    sum += i
    print(i)
 
print(sum)



0



628 / 468 / 179

Регистрация: 28.05.2012

Сообщений: 1,399

01.03.2021, 07:39

3

NoBodys,
Жуть…



0



0 / 0 / 0

Регистрация: 10.02.2021

Сообщений: 10

01.03.2021, 07:41

 [ТС]

4

Traceback (most recent call last):
File “main.py”, line 1, in <module>
for i in range (m,n+1):
NameError: name ‘m’ is not defined



0



628 / 468 / 179

Регистрация: 28.05.2012

Сообщений: 1,399

01.03.2021, 07:44

5

nohcho_borz95, М. Лутц вам в помощь



0



Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

15823 / 8956 / 2596

Регистрация: 21.10.2017

Сообщений: 20,638

01.03.2021, 08:01

6

NoBodys, сумму квадратов



0



628 / 468 / 179

Регистрация: 28.05.2012

Сообщений: 1,399

01.03.2021, 08:03

7

iSmokeJC, он ещё и sum использовал…



1



iSmokeJC

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

15823 / 8956 / 2596

Регистрация: 21.10.2017

Сообщений: 20,638

01.03.2021, 08:09

8

Python
1
2
3
4
5
6
7
def sum_squares(m, n):
    if m == n:
        return m * m
    return m * m + sum_squares(m + 1, n)
 
 
print(sum_squares(1, 4))



0



Arsegg

3478 / 2086 / 559

Регистрация: 02.09.2015

Сообщений: 5,332

01.03.2021, 10:50

9

Python
1
print(sum(map(lambda x: x ** 2, range(m, n + 1))))



1



Semen-Semenich

4466 / 3146 / 1112

Регистрация: 21.03.2016

Сообщений: 7,832

01.03.2021, 18:47

10

iSmokeJC, рекурсия вещь хорошая но не всегда

Python
1
2
3
4
5
6
def sum_squares(m, n):
    if m == n:
        return m * m
    return m * m + sum_squares(m + 1, n)
 
print(sum_squares(1, 1500))

RecursionError: maximum recursion depth exceeded in comparison
свой пятак в копилку

Python
1
2
3
4
sum_ = 0
for i in range (m,n):
    sum_ += i**2
print(sum_ )



2



Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

15823 / 8956 / 2596

Регистрация: 21.10.2017

Сообщений: 20,638

01.03.2021, 19:00

11

Semen-Semenich, безусловно!
Написал, так, как вариант…



0



Welemir1

01.03.2021, 19:02


    Найти сумму квадратов чисел от m до n

Не по теме:

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

но не всегда

и не в питоне)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

01.03.2021, 19:02

Найти сумму, произведение, сумму квадратов и сумму корней 2 чисел
Вводятся 2 числа. Найти их сумму,произведения сумму квадратов и сумму корней

Дано n чисел. Найти их сумму, сумму квадратов и квадрат суммы
Всем привет =)
Только начала изучение C# .
Пожалуйста, напишите решение задачи в консольном…

Дан массив целых чисел Х. Найти сумму квадратов всех чисел
Пожалуйста скиньте решение
На С++ или ассамблер
2 задания
1) Дан массив целых чисел Х. Найти…

Задан массив из пяти целых чисел, найти сумму квадратов этих чисел
Помогите пожалуйста написать программу на ассемблера NASM, вот такое задание:Задан массив из пяти…

Задана последовательность действительных чисел. Найти сумму квадратов чисел, значение которых принадлежит промежутку [a, b]
Задана последовательность действительных чисел. Найти сумму квадратов чисел,
значение которых…

Найти сумму квадратов чисел от A до B
Нужно ввести с клавиатуры A и B, чтобы программы выдавала на экран сумму квадратов чисел от A доB.

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

Или воспользуйтесь поиском по форуму:

12

You are currently viewing Программа на Python для суммы квадратов первых n натуральных чисел

Дано положительное целое число N. Задача состоит в том, чтобы найти 12 + 22 + 32 + ….. + N2.

Примеры:

Input : N = 4
Output : 30
12 + 22 + 32 + 42
= 1 + 4 + 9 + 16
= 30

Input : N = 5
Output : 55

Способ 1: O(N) 

Идея состоит в том, чтобы запустить цикл от 1 до n, и для каждого i, 1 <= i2 суммировать.

# Python3 Program to
# find sum of square
# of first n natural
# numbers


# Return the sum of
# square of first n
# natural numbers
def squaresum(n) :

	# Iterate i from 1
	# and n finding
	# square of i and
	# add to sum.
	sm = 0
	for i in range(1, n+1) :
		sm = sm + (i * i)
	
	return sm

# Driven Program
n = 4
print(squaresum(n))

# This code is contributed by Nikita Tiwari.*/

Выход:

30

Метод 2: O(1)

Доказательство:

Мы знаем,
(k + 1)3 = k3 + 3 * k2 + 3 * k + 1
Мы можем записать вышеуказанный идентификатор для k от 1 до n:
23 = 13 + 3 * 12 + 3 * 1 + 1 ......... (1)
33 = 23 + 3 * 22 + 3 * 2 + 1 ......... (2)
43 = 33 + 3 * 32 + 3 * 3 + 1 ......... (3)
53 = 43 + 3 * 42 + 3 * 4 + 1 ......... (4)
...
n3 = (n - 1)3 + 3 * (n - 1)2 + 3 * (n - 1) + 1 ......... (n - 1)
(n + 1)3 = n3 + 3 * n2 + 3 * n + 1 ......... (n)

Подставляя уравнения (N - 1) в уравнении Н
(П + 1)3 = (Н - 1)3 + 3 * (П - 1)2 + 3 * (П - 1) + 1 + 3 * н2 + 3 * П + 1
 = (Н - 1)3 + 3 * (П2 + (п - 1)2) + 3 * ( n + (n - 1) ) + 1 + 1

Поставив все уравнения, получим
(П + 1)3 = 13 + 3 * Σ к2 + 3 * Σ к + Σ 1
н3 + 3 * н2 + 3 * П + 1 = 1 + 3 * Σ к2 + 3 * (п * (п + 1))/2 + п
н3 + 3 * н2 + 3 * н = 3 * K и Σ2 + 3 * (п * (п + 1))/2 + п
н3 + 3 * н2 + 2 * п - 3 * (п * (п + 1))/2 = 3 * Σ к.2
n * (n2 + 3 * n + 2) - 3 * (n * (n + 1))/2 = 3 * Σ k2
n * (n + 1) * (n + 2) - 3 * (n * (n + 1))/2 = 3 * Σ k2
n * (n + 1) * (n + 2 - 3/2) = 3 * Σ k2
n * (n + 1) * (2 * n + 1)/2 = 3 * Σ k2
n * (n + 1) * (2 * n + 1)/6 = Σ k2
# Python3 Program to
# find sum of square
# of first n natural
# numbers

# Return the sum of
# square of first n
# natural numbers
def squaresum(n) :
	return (n * (n + 1) * (2 * n + 1)) // 6

# Driven Program
n = 4
print(squaresum(n))

#This code is contributed by Nikita Tiwari.															

Выход:

30

Избегая раннего переполнения:
Для большого числа n значение (n * (n + 1) * (2 * n + 1)) будет переполнено. Мы можем до некоторой степени избежать переполнения, используя тот факт, что n*(n+1) должно быть кратно 2.

# Python Program to find sum of square of first
# n natural numbers. This program avoids
# overflow upto some extent for large value
# of n.y

def squaresum(n):
	return (n * (n + 1) / 2) * (2 * n + 1) / 3

# main()
n = 4
print(squaresum(n));

# Code Contributed by Mohit Gupta_OMG <(0_o)>

Выход:

30

Самая короткая программа для печати суммы квадратов введённых чисел (печатается только сумма квадратов, а сами числа или их квадраты не сохраняются для дальнейшей обработки) :

print(“сумма квадратов =”,sum([int(input(“ч­исло “+str(i+1)+”=”))**2 for i in range(10)]))

Ввод с клавиатуры в список можно сделать генератором, а потом массив чисел обработать функцией map, указав функцию обработки возведение в квадрат.

При этом список введённых чисел сохраняется.

a=[int(input(“числ­о “+str(i+1)+” = “)) for i in range(10)]

print(“сумма квадратов равна”,sum(map(lambd­a x:x**2,a)))

Можно сделать ввод с клавиатуры в список квадратов генератором, а потом массив квадратов чисел суммировать функцией sum

При этом сохраняется список квадратов введённых чисел.

a=[int(input(“числ­о “+str(i+1)+” = “))**2 for i in range(10)]

print(“сумма квадратов равна”,sum(a))

Если требуется сохранить и вывести только сумму квадратов, не сохраняя никаких введённых чисел, то можно суммировать при вводе чисел:

s=0

for i in range(10):

____s=s+int(input(­”число “+str(i+1)+”=”))**2­

print(“сумма квадратов равна “,s)

Пример работы будет одинаковым для всех приведённых программ:

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