擅长:python、mysql、java
<p>你确定n=24有解吗?我认为你的代码是按预期工作,它只是需要很长时间才能得到正确的答案。
我改变了你的循环,所以我只寻找n=24的解,并打印出它正在尝试的数字。。。这将允许您在命令行上运行它,并打印出它正在尝试的数字,您可以看到为什么需要这么长时间</p>
<pre><code>def loop(n):
x = n
for i in range(ones(x),ones(x)*2):
print('\r' + str(i), end='')
if check(str(i)) == True:
break
else:
continue
print('done')
</code></pre>
<p>这个数字要高得多</p>
<p><code>n=23 >> 11111111111111111111228</code></p>
<p><code>n=24 >> 111111111111111112163473</code>在我达到jupy笔记本极限之前</p>
<p>我不确定你是否有时间让电脑来解决这个问题,比如说你一秒钟能查1000个数字,这需要你<code>10^24 * 10^-4 = 10^20 seconds</code>。。。或者<code>1.15740741 × 1015 days</code>。您可能需要做一些复杂的逻辑来避免两次检查相同的数字(对于您的算法,112==121)</p>
<p>你的问题“为什么要花更长的时间”的答案是,答案离n=24的起点比n=23要远得多</p>