Python:
# -*- coding: utf-8 -*-
# 算法:对筛法
# 求素数
# 算法基本原理:
# 求n以内的素数,则将2到sqrt(n)的素数的倍数均除去,留下的即为素数
# 未优化,优化后可以进一步降低时间复杂度
# 时间复杂度 O(nlog(logn))
# 空间复杂度 O(n)
import math
limit = 10000000
flag = int(math.sqrt(limit))
L = [True for i in xrange(2, limit)]
def sieve(x):
for i in xrange(x*x, limit - x, x):
L[i] = False
def foo():
map(sieve, xrange(2, flag, 1))
if __name__ == "__main__":
import profile
profile.run("foo()")
C++:
/*
* 对筛法,求n以内的素数
*
* 算法基本思想:对2到n的数,筛去其中2到sqrt(n)的中素数
* 的倍数,即可获得最终的素数
*
* 以下是C++语言实现代码
* 未经过优化,时间空间效率较差
*
* 可以的优化思路:bool数组可以使用无符号数字表示,其中
* 每一个bit表示真假,可节省空间
*/
#include
#include
using namespace s