Project Euler Problem 29: Distinct Powers¶
The source code for this problem can be found here.
Problem Statement¶
Consider all integer combinations of \(a^b\) for \(2 \le a \le 5\) and \(2 \le b \le 5\):
\[\begin{split}&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 \\\end{split}\]
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 \le a \le 100\) and \(2 \le b \le 100\)?
Solution Discussion¶
Nothing sophisticated here, explicitly perform the computation.
Solution Implementation¶
from itertools import product
def solve():
""" Compute the answer to Project Euler's problem #29 """
upper_bound = 100
terms = set()
for a, b in product(range(2, upper_bound + 1), repeat=2):
terms.add(a ** b)
answer = len(terms)
return answer
expected_answer = 9183
-
solutions.problem29.
solve
()¶ Compute the answer to Project Euler’s problem #29