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();
}
}
}
Link to this post!