Project Euler 29

Project Euler 29

题目

Distinct powers

Consider all integer combinations of \(a^b\) for \(2 \le a \le 5\) and \(2 \le b \le 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\le a \le 100\) and \(2 \le b \le 100\)?

解决方案

使用Python计算大数的特点,可以直接将所有数计算出来。

另外一种方案是,把每个数对\(e\)取对数,然后把\(b\ln a\)计算出来。不过这种做法的代价是需要特别注意浮点数的误差。

代码

1
2
3
N = 100
ans = len(set(a ** b for a in range(2, N + 1) for b in range(2, N + 1)))
print(ans)
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
Ujimatsu Chiya 微信 微信
Ujimatsu Chiya 支付宝 支付宝