开门见山
什么是素数?
除1和它本身外无其他因数的数就称为素数(或质数)。
相对应的,除1和它本身外还有其他因数的数就称为合数。
需要注意的是:1既不是素数,也不是合数。
那么今天,就让我来完完整整的梳理一下所有的质数筛法。
1.判断一个数是否为素数:
没有利用任何技巧去修饰它,最简洁的码风,最朴素的pd。
当然,与之相对应的,它的速度也不是一般的慢。
2.判断一个数是否为素数(进阶版):
可能相比于第一种pd方式,它已经足够奢华了(指使用了sqrt),速度也是提升了许多。
【常用】
3.利用特判及for循环特性进行pd:
我只能看到:【i=-~i】质变成为【i+=6】。光凭这一点,它的速度就已经碾压前两个了。
4.埃氏筛:
要记住,isPrime数组类型一定要是布尔型,不信的话,你可以用整型试一试。
我个人并不常用。
5.欧拉筛:
break语句使得整个程序的时间复杂度稳定在线性。如果遇到一些对时间复杂度要求很高的令人作呕的题目(劝出题人善良),那还是用这个筛法比较合适吧(个人观点)。
好了,以上就是我梳理的内容了,肯定不全,毕竟我所写的都是适用于大众的算法,某些追求极致复杂度的算法,我就不一一梳理了(绝对不是因为想偷懒)。
See you again.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!