如题,新手刚刚学习编程知识,没有任何编程经验,最近刚刚学习Python,对Python比较感兴趣,求高手解答。
不会python,用Java的只要用两个for循环嵌套下就行吧,不过数字比较大,建议用个map存储下非素数的情况做个判断,这样程序会优化点。
素数:大于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)
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教程里有,菜鸟教程里也有例子
用Java吧,自定义Collector收集器能在一秒内完成百万级素数筛选打印
首先,除了2,可以排除偶数,干掉一半!
其次,一个数,如果不是素数,那么它必定可以分解成2个因数的乘积,所以,其中,较小的因数一定不大于这个数的平方根,所以,如果判断是否是素数,只需从2判断到该数的平方根即可!这么以来又干掉很大一部分!
结合这2个因素,手机上运行代码,打印100万以内的素数,用时:16.5秒