有一些题可能会让你求一些数最多有几个因子,也就是最多可以由几个数相乘得到,这就要求这些因子都是素数,不能再分解了,所以可以直接求出素因子,在筛选素数的同时,记录他的倍数的因子个数
void init()
{
for(int i = 2; i < maxn; i++)
{
if(!sum[i])
for(int j = i; j < maxn; j += i)
sum[j] = sum[j/i]+1;
}
for(int i = 1; i < maxn; i++) //这里用前缀和做
sum[i] += sum[i-1];
}