关于素数筛的问题

学术版

@[zz2108828](/space/show?uid=112046) j=i*i:以5为例,5的倍数有5(这里不考虑),10,15,20,25,30..... 他这里之所以从25开始筛,是因为前面的10,15,20,已经分别在2,3,2的倍数时被筛掉了。 j+=i就很好理解了啊,还是以5为例,第一个筛掉了25,那么下一个5的倍数自然就是25+5=30,再下一个也自然就是30+5=35
by FCBM71 @ 2018-07-13 11:30:37


其实你也可以写成 ```cpp for(int j=i;i*j<=n;j++) vis[i*j]=1; ``` 可能更好懂吧
by ZigZagKmp @ 2018-07-13 11:32:45


@[周子凯](/space/show?uid=35871) 但貌似这样效率要低一点点诶
by FCBM71 @ 2018-07-13 11:34:43



by ZigZagKmp @ 2018-07-13 11:37:22


@[FCBM71](/space/show?uid=45176) @[周子凯](/space/show?uid=35871) 谢过两位大佬!!
by zz2108828 @ 2018-07-13 12:08:15


|