Python如何寻找100万以内的所有素数

如题,新手刚刚学习编程知识,没有任何编程经验,最近刚刚学习Python,对Python比较感兴趣,求高手解答。

8个回答

首先,除了2,可以排除偶数,干掉一半!
其次,一个数,如果不是素数,那么它必定可以分解成2个因数的乘积,所以,其中,较小的因数一定不大于这个数的平方根,所以,如果判断是否是素数,只需从2判断到该数的平方根即可!这么以来又干掉很大一部分!

结合这2个因素,手机上运行代码,打印100万以内的素数,用时:16.5秒

素数:大于1的整数,除了1和他本身再无其他因数

def sushu(n):
for i in range(1,n+1):
list = []
for j in range(2,n+1):
if i%j == 0:
list.append(i)
if len(list) == 1:
print(i)

sushu(1000000)

廖雪峰的Python教程里有,菜鸟教程里也有例子

不会python,用Java的只要用两个for循环嵌套下就行吧,不过数字比较大,建议用个map存储下非素数的情况做个判断,这样程序会优化点。

def sushu(n):
for i in range(1,n+1):
list = []
for j in range(2,n+1):
if i%j == 0:
list.append(i)
if len(list) == 1:
print(i)
sushu(1000000)

如果是要寻找这么大的数据的话,建议用素数筛法。

筛法做,但是要用迭代器生成,很担心出现内存问题啊。

用Java吧,自定义Collector收集器能在一秒内完成百万级素数筛选打印

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐