数学数论数论分块本页总览数论分块概述参考资料 数论分块 - OI Wiki 简介 数论分块 用于快速计算形如 ∑i=1nf(i)⌊n/i⌋\sum_{i=1}^n f(i)\lfloor n/i\rfloor∑i=1nf(i)⌊n/i⌋ 的和式。⌊n/i⌋\lfloor n/i\rfloor⌊n/i⌋ 随 iii 增大只取 O(n)O(\sqrt n)O(n) 种不同值,且取同一值的 iii 构成一段连续区间 [l,r][l,r][l,r],其右端点为 r=⌊n/⌊n/l⌋⌋r=\lfloor n/\lfloor n/l\rfloor\rfloorr=⌊n/⌊n/l⌋⌋。对每段批量累加即可在 O(n)O(\sqrt n)O(n) 内完成。 实现 61 Bcppfor(ll l=1,r;l<=n;l=r+1){ r=n/(n/l); ans+=(r-l+1)*(n/l);} 例题 题面code洛谷 UVA11526 H(n)给定 TTT 次询问,每次询问一个正整数 nnn,求 ∑i=1n⌊ni⌋\sum_{i=1}^n\left\lfloor\frac{n}{i}\right\rfloor∑i=1n⌊in⌋。