【发布时间】:2011-03-06 01:42:28
【问题描述】:
我正在尝试解决这里提到的问题:https://www.spoj.pl/problems/PRIME1/
我也在下面给出描述。
Peter 想为他的密码系统生成一些素数。帮助他!你的任务是生成两个给定数字之间的所有素数!
输入
输入以单行中的测试用例数量 t (t
输出
对于每个测试用例,打印所有质数 p 使得 m
我的代码如下。我认为列表中的删除方法非常慢。
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 很慢。我的代码是正确的,但我超出了时间限制。有人可以帮我改进这段代码吗?
【问题讨论】:
-
你有profiled吗?
-
我还没有这样做..让我来做吧。
标签: python algorithm data-structures primes