hit counter

Timeline

My development logbook

Little Erlang Exercise 6

Problem Definition: Euler Problem 6

This problem is very straight-forward.


“”“
The sum of the squares of the first ten natural numbers is,
1+ 22 + … + 102 = 385

The square of the sum of the first ten natural numbers is,
(1 + 2 + … + 10)2 = 55 = 3025

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.
”“”

if name == “main”:
Max = 100
SumOfSquare = sum([pow(X, 2) for X in xrange(1, Max + 1)])
SquareOfSum = pow(sum([X for X in xrange(1, Max + 1)]), 2)
print “%d” % (SquareOfSum – SumOfSquare)




Here is the corresponding erlang version.


-module(p6).
-export([find_diff/1]).

find_diff(Max)–>
SumOfSq = lists:foldl(fun (X, Y) –> X + Y end, 0, [X*X || X <– lists:seq(1, Max)]),
SqOfSum = math:pow(
lists:foldl(fun (X, Y) –> X + Y end, 0, [X || X <– lists:seq(1, Max)]),
2),
SqOfSum – SumOfSq.



Basically, both python and erlang offer very powerful list comprehension syntax.