求质数算法----层层递进的N种算法

本文介绍了求质数的多种算法,包括普通解法的逐步优化,如筛法中的朴素筛法(埃氏筛法)和线性筛法(欧拉筛法)。详细阐述了每种方法的思路、优化措施和时间复杂度,并讨论了如何在有限空间内存储质数。此外,还探讨了如何利用素数定理估算范围解决打印最小n个素数的问题,以及欧拉函数在质数算法中的应用。
摘要由CSDN通过智能技术生成

题目1:给出一个正整数n,打印出所有从1~n的素数(即质数);

题目2:给出一个正整数n,打印出自然数中最小的n个素数(即质数);

先讨论问题1.

普通解法

  • 傻瓜法

对于每个数m,逐个去除以小于它的数,看是否只有1能够整除。

  • 优化

对于每个数m,逐个去除以小于等于sqrt(m)的数,看是否只有1能够整除。

  • 进一步优化

对于每个数m,其实只需要对小于m的已经求出来的质数进行试除,直到sqrt(m)即可。因为如果不能被质数整除,一定也不能被合数整除。

筛法

首先,2是公认最小的质数,所以,先把所有2的倍数去掉;然后剩下的那些大于2的数里面,最小的是3,所以3也是质数;然后把所有3的倍数都去掉,剩下的那些大于3的数里面,最小的是5,所以5也是质数......上述过程不断重复,就可以把某个范围内的合数全都除去(就像被筛子筛掉一样),剩下的就是质数了。

ä¸è§å¾ 请翻å¢

  • 朴素筛法(埃氏筛法&

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值