代码大概长这样:
void dfs(LL n,int i,LL x) {
LL y = n/x;
for(; p[i]*p[i] <= y; ++i)
for(LL pp = p[i]*p[i], e = 2; pp <= y; pp *= p[i], ++e)
dfs(n,i+1,x*pp);
}
for(LL l = 1, x,r; l <= n; l = r+1)
x = n/l, r = n/x, dfs(r,0,1,1)
求证复杂度,跑下来类似 O(n54)
模拟赛题解 说可以做到 O(n32)(可能是我理解错了),是不是有什么高明的做法