@[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