求十万以内素数的两种简单优化(埃拉托色尼素数筛选法)

一、什么是素数

  素数又称为质数。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。素数在日常中最多的应用就是加密算法,例如RSA加密算法就是基于来实现的。RSA算法会随机生成两个1024位的质数相乘,要破解密码必须对乘积做质因数分解,而1024位的质因数分解是非常困难的。

二、如何快速的算出小于某个数的所有素数?

  从素数的概念上似乎可以很快得出一个算素数的公式,即将一个数循环做除法,从1一直除到它本身,如果中途只有被1和自己整除了这个数便是素数了,这样的计算效率是非常差的,因为他会不停的遍历整个数据范围。我们来试着跑一下它的效率:

#求10万以内的素数 import datetime start = datetime.datetime.now() for i in range(2,100000): for j in range(2,i): if i%j == 0: break #else: #print(i) stop = datetime.datetime.now() print(stop-start)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdywy.html