我的代码:
fn[1]=f[1]=2; for(int i=2;i<=n;i++){ if(!f[i])prim[++cnt]=i,fn[i]=2; for(int j=1;j<=cnt&&i*prim[j]<=n;j++){ f[i*prim[j]]=1; if(!(i%prim[j])){ fn[i*prim[j]]=fn[i]<<1; if(i==prim[j])fn[i*i]--; break; } } }
思路:线性筛计算因数个数为 444 的所有数 玄关:为什么 fn 有的是 000???