int res = 0; for (int i = 2, j; i <= mx; ++ i) { if (st[i]) continue; for (j = i << 1; j <= mx; j += i) st[j] = true; LL k = i; for (cntp[j = 1] = 0; k <= mx; cntp[++ j] = 0, k *= i) for (int l = k; l <= mx; l += k) cntp[j] += cnt[l]; for (int l = j - 1, tmp; l; -- l) res = (res + (LL)adj(tmp = ans[cntp[l]] - ans[cntp[l + 1]]) * l) % Mod; }
Gitalking ...