You are on the Home/Other Tutorials/Project Euler/Problem 29 page
Google
Web This Site

Project Euler - Problem 29

More about Project Euler.

Problem description

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)=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?

Solution

I couldn't think of any slick way to solve this problem.  So, using the Large Number Arithmetic module, the following code took about 25 seconds.

Sub Euler029()
    Dim A As Integer, B As Integer
    Dim Rslt As Collection, aRslt As String
    Set Rslt = New Collection
    Dim ProcTime As Single
    ProcTime = Timer
    For A = 2 To 100
        For B = 2 To 100
            aRslt = LargePower(CStr(A), CStr(B))
            On Error Resume Next
            Rslt.Add aRslt, aRslt
            On Error GoTo 0
            Next B
        Next A
    Debug.Print Rslt.Count, Timer - ProcTime
    End Sub