rt。
我先开始线性筛写错了,以下是错误代码:
inline void init(int n)
{
for(int i=1;i<=n;i++){
if(!num[i]) prime.emplace_back(i);
for(int j:prime){
if(i*j>=n) break;
num[i*j]=1;
if(i%j==0) break;
}
}
}
很显然,for(int i=1;i<=n;i++) 肯定是错的,i 应该从 2 开始,并非 1。这样会导致所有数都加入了 prime 这个数组。
但是,这份代码过了 评测记录
求大佬们解答,这种做法的正确性是否有保证,不然就是数据水了(bushi)