帮忙看看,能否优化

求1000内的素数···
g=[2]
for i in range(3,1000):
g.append(i)
for j in range(len(g)):
for q in range(2,g[j]):
if g[j]%q==0:
g[j]=1
break
t=[]
for i in g:
if i!=1:
t.append(i)
print t

能否帮我看下,怎么样简化下·····初学编程,感觉太冗余了

写了一段,判断素数,对于大于2的数,偶数先排除,判断能否被整除,只要依次除到它的一半即可

[code="python"]
prime_numbers = [2]

for i in range(3, 1000):
if i % 2 == 0:
continue

is_prime = True
for q in range(2, i / 2):
    if i % q == 0:
        is_prime = False
        break

if is_prime:
    prime_numbers.append(i)

print prime_numbers
[/code]

下面对你的代码,可以优化的地方
[code="python"]
g=[2]
for i in range(3,1000):
g.append(i)

上面这三段,直接写成g = list(range(2, 1000))

for j in range(len(g)): # 这里就不用下标来写了,直接for j in g: 即可以得到每个元素
for q in range(2,g[j]): # range(2, g[i] / 2)
if g[j]%q==0:
g[j]=1
break
t=[]
for i in g:
if i!=1:
t.append(i)

下面四行,可以写成一行 t = [i for i in g if i != 1]

print t

[/code]