5位数字,16807 = 75,也是第五种力量。同样,9位数字134217728 = 89,是第九种力量。
存在多少个n位正整数,它们也是第n个幂?
我写了以下代码:
ctr=0
for power in range(1,10):
for base in range (1,10):
if len(str(base**power))==power:
lower=base
break
if len(str(9**power))==power:
upper=9
elif len(str(8**power))==power:
upper=8
for k in range(lower,upper+1):
ctr+=1
print (ctr)
但我输出36而不是49.
逻辑适用于以下分析: 1升至1 <= x升至1 <= 9升至1 5升至3 <= x升至3 <= 9升至3 ......所以直至 9提高到9
点票中缺少哪些号码?
答案 0 :(得分:0)
将for power in range(1,10):
更改为for power in range(1,22):
你将拥有它们。你对基数有正确的思考,如果以10为基数,n次方将永远不会是n位数。但这对于&#39; n&#39;而言并不正确。数。例如,9 ^ 21是21位数。
我也给了你问题的答案:&#34;哪个号码丢失了?&#34;但项目欧拉也是一个数学挑战,这对学习数学很有帮助。所以你应该找到一种比我给你的暴力更聪明的方法。 1 to 22
之所以有效,是因为我们已经知道他们只有49个答案而且我已经强制要求获得第49个答案。
另外,正如评论中所述:
if len(str(9**power))==power:
upper=9
elif len(str(8**power))==power:
upper=8
for k in range(lower,upper+1):
ctr+=1
应该是:
ctr += 10-lower
(嗯,即使是ctr += 10-base
,也可以删除&#34;降低&#34; var,因为你休息了。