You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
因为在文章中,并没有说要筛出小于MAXN的个数,反而在前面说过是1-n,所以应该改成<=MAXN才对,并且应该把 if (1ll * i * pri[j] >= MAXN) break;改成if (1ll * i * pri[j] > MAXN) break;
除了这点之外,注释的描述也又问题,应把由于 pri 里面质数是从小到大的,所以 i 乘上其他的质数的结果一定也是 pri[j] 的倍数 它们都被筛过了,就不需要再筛了,所以这里直接 break掉就可以了改为由于 pri里面质数是从小到大的,所以 i 乘上其他的质数的结果一定会被 pri[j]的倍数筛掉,就不需要在这里先筛一次,所以这里直接 break 掉就好了
The text was updated successfully, but these errors were encountered:
请选择:
我正在访问这个页面
https://oiwiki.vx.st/math/number-theory/sieve/
我发现页面有这样的问题
线性筛有点问题,第一是注释,第二是代码。
因为在文章中,并没有说要筛出小于MAXN的个数,反而在前面说过是1-n,所以应该改成
<=MAXN
才对,并且应该把if (1ll * i * pri[j] >= MAXN) break;
改成if (1ll * i * pri[j] > MAXN) break;
除了这点之外,注释的描述也又问题,应把
由于 pri 里面质数是从小到大的,所以 i 乘上其他的质数的结果一定也是 pri[j] 的倍数 它们都被筛过了,就不需要再筛了,所以这里直接 break掉就可以了
改为由于 pri里面质数是从小到大的,所以 i 乘上其他的质数的结果一定会被 pri[j]的倍数筛掉,就不需要在这里先筛一次,所以这里直接 break 掉就好了
The text was updated successfully, but these errors were encountered: