擅长:python、mysql、java
<p>查看问题定义:</p>
<blockquote>
<p>In each of the next t lines there are two numbers m and n (1 <= m <= n <= 1000000000, n-m<=100000) separated by a space.</p>
</blockquote>
<p>看看你的代码:</p>
<blockquote>
<p>mySieve= [True] * (n+1)</p>
</blockquote>
<p>因此,如果<code>n</code>是{<cd2>},那么您将尝试创建一个包含10000000001个布尔值的列表。这意味着您要求Python为十亿个指针分配存储空间。在64位平台上,对于Python来说,这是8GB的容量,但是很可能会让您的系统陷入交换地狱,或者被限制或看门狗杀死。在32位平台上,这是4GB,这将保证您获得<code>MemoryError</code>。在</p>
<p>该问题还明确显示以下警告:</p>
<blockquote>
<p><strong>Warning: large Input/Output data, be careful with certain languages</strong></p>
</blockquote>
<p>所以,如果你想用这种方式实现它,你就得想出一个更紧凑的存储器。例如,<a href="https://docs.python.org/3.3/library/array.html" rel="nofollow">^{<cd4>}</a>只需要1GB,而不是4或8。如果你用比特而不是字节来存储它,你可以让它变得更小(128MB),但这并不是对代码的简单更改。在</p>