用1e8以内前5e5大的质数是否可以卡掉部分做法?
查看原帖
用1e8以内前5e5大的质数是否可以卡掉部分做法?
438168
OldVagrant楼主2023/7/24 17:01

rt,这道题有一种O(nk)O(nk)的做法,kk 是 10410^4 以内质数个数,即 12291229。但是这样的复杂度应该是勉勉强强需要卡常才能过的,因为判断整除需要取模,取模的常数很大。题解区也有一些用了这种做法的,或许可以被卡掉?
一种更好的思路是每次除完之后判断一下剩下的是不是一个大质数,如果是则直接退出循环,极限情况下时间复杂度是 O(V+Tk2+N)O(V+Tk^2+N),VV 是线性筛的复杂度,每组数据最劣会被卡到 O(k2+n)O(k^2+n),总的复杂度就是 O(Tk2+N)O(Tk^2+N)
当然也可以用一些复杂度低于线性的质数筛

2023/7/24 17:01
加载中...