<p>我在做欧拉计划,第三题。
问题是:</p>
<blockquote>
<p>"The prime factors of 13195 are 5, 7, 13 and 29. What is the largest
prime factor of the number 600851475143?"</p>
</blockquote>
<p>在回答这个问题时,我将任务分解为首先找到所有质数<;x(相反)。为什么下面的代码似乎不起作用,我不确定是逻辑还是运算符的错误使用。在</p>
<pre><code>#A function to find prime numbers under n
def find_prime(n):
for i in reversed(xrange(2, n)):
if (n % i) != 0:
print i
find_prime(n)
</code></pre>
<p>在测试中,为了好玩,我还构建了一个质数检查器,所以我做了一些测试。在</p>
^{pr2}$
<p>在我进入下一个解决问题的步骤之前,有谁能帮我理解一下我在<strong>find_prime()</strong>函数上的错误之处吗?在</p>
<p>在你开始编码之前,也许你应该先了解一下你正在处理什么。素数研究得很好。首先,你不需要所有的素数,其次,每次你找到一个除数,你就可以把这个数除以这个数,这样就可以得到一个更小的问题。最后,剩下的号码就是你要找的。现在,除了2,没有其他偶数是素数,所以<code>xrange(3, n, 2)</code>。再搜索一些,你会找到一个解决方案,它不需要宇宙的时间来完成。在</p>