Project Euler Problem #29!

March 23rd, 2009
by Serinox

Problem #29 says:

Consider all integer combination's of a^(b) for 2 ≤ a ≤ 5 and 2 ≤ b ≤ 5:

    2^(2)=4, 2^(3)=8, 2^(4)=16, 2^(5)=32
    3^(2)=9, 3^(3)=27, 3^(4)=81, 3^(5)=243
    4^(2)=16, 4^(3)=64, 4^(4)=256, 4^(5)=1024
    5^(2)=25, 5^(3)=125, 5^(4)=625, 5^(5)=3125

If they are then placed in numerical order, with any repeats removed,
 we get the following sequence of 15 distinct terms:

4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125

How many distinct terms are in the sequence generated
by a^(b) for 2 ≤ a ≤ 100 and 2 ≤ b ≤ 100?

Very simple generate and count. Solution in c#/mono. No nifty tricks needed to make it work better, runs in a second or less.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace ProjectEuler
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();
            int a = 2;
            int b = 2;
            ArrayList DistinctTerms = new ArrayList();
            while (a <= 100)
            {
                while (b <= 100)
                {
                    if (DistinctTerms.Contains(Math.Pow(a,b)) == false)
                    {
                        DistinctTerms.Add(Math.Pow(a, b));
                    }
                    b++;
                }
                b = 2;
                a++;
            }

            Console.WriteLine(DistinctTerms.Count);
            sw.Stop();
            Console.WriteLine(sw.Elapsed.ToString());
            Console.ReadLine();
        }
    }
}

Posted in Project Euler | Comments (0)

No comments yet

Leave a Reply

You must be logged in to post a comment.