#include #include #include using namespace std; typedef long long LL; int p, q, l, r; vector seg_l, seg_r, seg_q; vector seg_sum; LL CalcSum(int rr) { if (rr <= 0 || p == 0) return 0LL; if (rr >= p) return seg_sum.back() + 1LL * (rr - p) * p; int idx = lower_bound(seg_r.begin(), seg_r.end(), rr) - seg_r.begin(); LL base = idx == 0 ? 0LL : seg_sum[idx - 1]; int ll = seg_l[idx], qv = seg_q[idx]; int len = rr - ll + 1; LL sum = 1LL * len * p - 1LL * len * qv * (ll + rr) / 2; return base + sum; } int main() { // freopen("mod.in", "r", stdin); // freopen("mod.out", "w", stdout); scanf("%d%d", &p, &q); if (p > 0) { for (int ll = 1; ll <= p; ) { int v = p / ll, rr = p / v; seg_l.push_back(ll); seg_r.push_back(rr); seg_q.push_back(v); int len = rr - ll + 1; LL sum = 1LL * len * p - 1LL * len * v * (ll + rr) / 2; LL total = (seg_sum.empty() ? 0 : seg_sum.back()) + sum; seg_sum.push_back(total); ll = rr + 1; } } while (q--) { scanf("%d%d", &l, &r); printf("%lld\n", CalcSum(r) - CalcSum(l - 1)); } return 0; }