Project Euler Problem 6: Sum square difference

Posted on

Problem

Continuing to work my way through some of of Project Euler. Problem 6 solved by my code below. Is it better to use sumOfTheSquares += i*i or utilize Math.Pow()?

The sum of the squares of the first ten natural numbers is,
12+22+...+102=38512+22+...+102=385

The square of the sum of the first ten natural numbers is,
(1+2+...+10)2=552=3025(1+2+...+10)2=552=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.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(SumSquareDifference(100));
        Console.ReadLine();
    }

    static int SumSquareDifference(int upperValue)
    {
        int sumOfTheSquares = 0;
        for (int i = 1; i <= upperValue; i++)
        {
            sumOfTheSquares += (int)Math.Pow(i,2); //Can't formulate this myself...
        }

        int squareOfTheSums =  (int)Math.Pow((upperValue + 1) * (upperValue / 2),2);

        return squareOfTheSums - sumOfTheSquares;
    }
}

Solution

I don’t know about the difference between sumOfTheSquares += i*i and Math.pow() but the sum of squared of first n natural numbers is as follows

12+22+32+42=n(n+1)(2n+1)612+22+32+42=n(n+1)(2n+1)6

So its faster than using a for loop

Edit: General way to prove this is to use mathematical induction
Here’s a link!

Leave a Reply

Your email address will not be published. Required fields are marked *