辛夷坞

涧户寂无人,纷纷开且落

By - Christen

Python 打印质数

总感觉在一篇文章中列出149行词语,对阅读体验来说,惨绝人寰,于是构思通过随机函数取出若干词,展示在表格中,或者用Canvas内,前者规整,后者活泼。考虑兼容性,还可引入Flash。但149个词,每次取多少合适呢?
强迫症晚期患者偏向于整除取值,却隐约感觉149是个质数,数学早还给老师了,短除法用的也不好,百度一下,发现还真有质数表,但程序员用图表查询,太伤自尊,搜出一个Python算法,非常高效。

# -*- coding:utf-8 -*-
def getPrime(maxNum):
    aList = [x for x in range(0, maxNum)]
    prime = []
    for i in range(2, len(aList)):
        if aList[i] != 0:
            prime.append(aList[i])
            clear(aList[i], aList, maxNum)
    return prime
def clear(aPrime, aList, maxNum):
    for i in range(2, int((maxNum / aPrime) + 1)):
        if not aPrime * i > maxNum - 1:
            aList[i * aPrime] = 0
print getPrime(500)

据说 1 千万以内 12.8 秒,膜拜。
运行结果:
(null)

Leave a Reply

Your email address will not be published.
*
*