开门见山

什么是素数?

除1和它本身外无其他因数的数就称为素数(或质数)。
相对应的,除1和它本身外还有其他因数的数就称为合数。
需要注意的是:1既不是素数,也不是合数。
那么今天,就让我来完完整整的梳理一下所有的质数筛法。


1.判断一个数是否为素数:

image
没有利用任何技巧去修饰它,最简洁的码风,最朴素的pd。
当然,与之相对应的,它的速度也不是一般的慢。


2.判断一个数是否为素数(进阶版):

image
可能相比于第一种pd方式,它已经足够奢华了(指使用了sqrt),速度也是提升了许多。
【常用】


3.利用特判及for循环特性进行pd:

image
我只能看到:【i=-~i】质变成为【i+=6】。光凭这一点,它的速度就已经碾压前两个了。


4.埃氏筛:

image
要记住,isPrime数组类型一定要是布尔型,不信的话,你可以用整型试一试。
我个人并不常用。


5.欧拉筛:

image
break语句使得整个程序的时间复杂度稳定在线性。如果遇到一些对时间复杂度要求很高的令人作呕的题目(劝出题人善良),那还是用这个筛法比较合适吧(个人观点)。


好了,以上就是我梳理的内容了,肯定不全,毕竟我所写的都是适用于大众的算法,某些追求极致复杂度的算法,我就不一一梳理了(绝对不是因为想偷懒)
See you again.

posted on 2024-09-20 21:37  3Done  阅读(3)  评论(0编辑  收藏  举报