NIEJIANWEI7 2010-07-07 15:03
浏览 241
已采纳

帮忙看看,能否优化

求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

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

  • 写回答

1条回答 默认 最新

  • u010804832 2010-07-07 19:03
    关注

    写了一段,判断素数,对于大于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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?