我的代码有一个特别离谱的错误还能得70分
在用线性筛处理最小质因子时,我写了:
for(int i = 2; i <= n; i++)
{
if(is_prime[i])
{
prime[++tot] = i;
mqf[i] = i;
}
for(int j = 1; j <= tot; j++)
{
if((long long)prime[j] * i > n)
break;
is_prime[i] = false;
mqf[i] = prime[j];
if(i % prime[j] == 0)
break;
}
}
(mqf[i]存i的最小质因子)
注意第12行,正确的写法应该是:
mqf[i * prime[j]] = prime[j];
(即i*prime[j]的最小质因数是prime[j])
而原代码写成了:i的最小质因子是prime[j]
这么离谱的错误竟然不影响我通过样例并拿70分??!