擅长:python、mysql、java
<p>我认为你必须使用素数分布的近似值,la <a href="http://en.wikipedia.org/wiki/Prime_number_theorem" rel="nofollow noreferrer">PNT</a>,它(我认为)表明在1和x之间,你将有大约<code>x/ln(x)</code>素数(ln是自然对数)。因此,给定单个迭代所需时间的粗略估计,您应该能够创建一个估计值。在</p>
<p>你的列表中有大约x/ln(x)素数。您的主代码块(在while循环内)具有恒定的时间(有效地)…因此:</p>
<p>t(x)~x/ln(x)*a+b+t(x-1)</p>
<p>其中<code>t(x)</code>是迭代x(包括x)所用的时间,<code>a</code>是检查列表中每个素数所用的时间(模运算),<code>b</code>是主循环的“常量”时间。我隐约记得有一种方法可以把这种递归函数转换成线性函数;)</p>