数论分块
Summary
数论分块用于快速计算函数值与 n 除以 i 的向下取整值乘积的和式。这个取整值随 i 增大只有根号 n 种不同结果,且相同结果对应一段连续区间;已知左端点后,可以直接算出右端点。对每一段批量累加,即可把逐项求和降到 O(根号 n)。这种遍历方式也是杜教筛、莫比乌斯反演等数论求和的基础技巧。
参考资料
简介
数论分块 用于快速计算形如 的和式。 随 增大只取 种不同值,且取同一值的 构成一段连续区间 ,其右端点为 。对每段批量累加即可在 内完成。
实现
for(ll l=1,r;l<=n;l=r+1)
{
r=n/(n/l);
ans+=(r-l+1)*(n/l);
}