Python的素数的代码我试图解决此处提到的问题:https://www.spoj.pl/problems/PRIME1/运行缓慢
我也给下面的描述。
彼得想为他的密码系统生成一些质数。帮助他!你的任务是产生两个给定数字之间的所有素数!
输入
输入开始的测试用例在一行数吨(吨< = 10)。在每个接下来的t行中,有两个空格分隔的数字m和n(1 < = m < = n < = 1000000000,n-m < = 100000)。
输出
对于每个测试实例打印所有素数p使得m < = P < = n时,用空line.`分开每行一个数,测试用例
我的代码如下所示。我想列表中的删除方法非常缓慢。
import sys
import math
num = int(sys.stdin.readline());
indices = []
maxrange = 2
while(num > 0):
a,b = sys.stdin.readline().split(" ");
a = int(a)
b = int(b)
if(a < 2):
a = 2
indices.append((a,b))
if(b > maxrange):
maxrange= b
num = num - 1
val = int(math.sqrt(maxrange)+1)
val2 = int(math.sqrt(val)+1)
checks = range(2,val2)
for i in range(2,val2):
for j in checks:
if(i!= j and j%i == 0):
checks.remove(j)
primes = range(2,val)
for i in checks:
for j in primes:
if(i != j and j%i == 0):
primes.remove(j)
primes2 = range(2,maxrange)
for i in primes:
for j in primes2:
if(j != i and j%i == 0):
primes2.remove(j)
for (a,b) in indices:
for p in primes2:
if(a<= p and b >= p):
print p
if(p > b):
break
print
我觉得python list remove很慢。我的代码是正确的,但我超过了timelimit。有人可以帮我改进这个代码。
你有[profiled](http://docs.python.org/library/profile.html)吗? – nmichaels 2011-03-06 01:55:13
我还没有做到这一点..我做到了。 – Boolean 2011-03-06 02:00:16