This project euler challenge states:

Consider all integer combinations 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}=3125If 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?

This was very straight forward for me. The most simple way to do this is a simple brute force option. There are ways to calculate out most of the duplicates, but those calculations end up taking longer than 2 simple loops and feed the results into a hashset to guarantee uniqueness to get the answer.

Program.cs
using System; using System.Collections.Generic; using System.Diagnostics; namespace Project_Euler_29 { internal class Program { private static void Main(string[] args) { Stopwatch sw = Stopwatch.StartNew(); HashSet<double> results = new HashSet<double>(); for (int a = 2; a <= 100; a++) { for (int b = 2; b <= 100; b++) { results.Add(Math.Pow(a, b)); } } sw.Stop(); Console.WriteLine($"Number of distinct powers: {results.Count}"); Console.WriteLine($"Took {sw.ElapsedMilliseconds}ms"); } } }

Recent Blog Activity

Blog Archive