#include #include #include using namespace std; typedef long long LL; int p, q, l, r; vector seg_l, seg_r, seg_q; vector pref; LL SumPref(int n) { if (n <= 0 || p == 0) return 0LL; if (n >= p) return pref.back() + 1LL * (n - p) * p; int id = lower_bound(seg_r.begin(), seg_r.end(), n) - seg_r.begin(); LL base = id == 0 ? 0LL : pref[id - 1]; int ll = seg_l[id], qv = seg_q[id]; int len = n - ll + 1; LL sum = 1LL * len * p - 1LL * qv * (ll + n) * len / 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 n = 1; n <= p; ) { int qv = p / n, rr = p / qv; seg_l.push_back(n); seg_r.push_back(rr); seg_q.push_back(qv); int len = rr - n + 1; LL sum = 1LL * len * p - 1LL * qv * (n + rr) * len / 2; LL total = (pref.empty() ? 0 : pref.back()) + sum; pref.push_back(total); n = rr + 1; } } while (q--) { scanf("%d%d", &l, &r); printf("%lld\n", SumPref(r) - SumPref(l - 1)); } return 0; }