传送门
然后整除分块
#include<bits/stdc++.h>
#define Mod 998244353
#define LL long long
using namespace std;
int n;
LL Sum(LL x){return x * (x+1) % Mod * (x*2+1) % Mod * 166374059 % Mod;}
LL calc(LL r,LL l){
LL val1 = Sum(r) - Sum(l-1);
LL val2 = (l+r) * (r-l+1) % Mod * 499122177 % Mod;
LL val3 = r-l+1;
return (val1 * 2 + val2 * 3 + val3 * 5) % Mod;
}
int main(){
scanf("%d",&n); LL ans = 0;
for(int l=1,r;l<=n;l=r+1){
int val = n/l; r = n/val;
ans += calc((LL)r,(LL)l) * (LL)val % Mod;
ans = (ans % Mod + Mod) % Mod;
} printf("%lld",ans); return 0;
}