The sum of the squares of the first ten natural numbers is,
The square of the sum of the first ten natural numbers is,
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025
385 = 2640.
Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
---------------------------------------------------------------------------------------------------------
beh, si vede, è molto semplice, sia in Python che in C++
codice Python
-------------------------------------------------------------------------------------
#!/usr/bin/env python
sum_square=lambda n: sum([i**2 for i in xrange(n+1)])
square_sum=lambda n: ((n*(n+1))/2)**2
problem_6=lambda n: square_sum(n)-sum_square(n)
#in alternativa... versione ricorsiva!
sum_square_rec=lambda number, actual=0: return actual==number and number**2 or (actual**2)+sum_square(number, actual+1)
square_sum_rec=lambda number, actual=0: return (actual==number and number) or (actual==0 and square_sum(number, actual+1)**2) or actual+square_sum(number, actual+1)
-------------------------------------------------------------------------------------
Spieghiamo ora il codice.
sum_square: questa semplice funzione fa la somma di tutti gli elementi di una list comprehension, nella quale ogni elemento è il quadrato di un numero che va da 0 a n+1
square_sum: questa semplice funzione ricava la somma di tutti i numeri da 1 a n compreso tramite una semplice formula: (n*n+1)/2. Ci vuole poco poi per farne il quadrato.
sum_square_rec: questa semplice funzione ha come caso base il confronto tra actual e number, se sono uguali viene restituito number elevato alla seconda, altrimenti si richiama la funzione sommando actual alla seconda.
square_sum_rec: questa semplice funzione ha 2 casi base:
- se actual==number: viene restituito number
- se actual==0: viene restituito il risultato della funzione con actual aumentato di 1 elevato alla seconda. questo caso base serve per poter avere un'elevazione a potenza della somma di tutti i numeri.
- caso normale: si somma actual al risultato della funzione con actual aumentato di 1
appare molto semplice, no? ecco la potenza del Python!
stay tuned!

0 commenti:
Posta un commento