Order $ m = \ lfloor \ sqrt [. 3] {n-} \ rfloor-. 1 $
$ \ sum_ {I =. 1} ^ {n-} GCD (Floor (\ sqrt [. 3] {I}), I) $
= $ \ sum_ {i = 1} ^ {m} \ sum \ limits_ {j = i ^ {3}} ^ {(i + 1) ^ {3} -1} gcd (i, j) + \ sum \ limits_ { i = (m + 1) ^ {3}} ^ {n} gcd (m + 1, i) $
consider a prefix of the formula and, i.e.
$ \ sum_ {i = 1} ^ {n} gcd (m, i ) $ (formula m and unrelated n and previous)
= $ \ sum_ {D | m} D \ sum_ {I =. 1} ^ {n / D} \ varepsilon (GCD (I, m / D)) $
= $ \ sum_ {T | m} \ MU (T) \ sum_ {dt | m} n-/ dt \ CDOT D $
= $ \ sum_ {T | m} n-/ T \ sum_ {D | T} D \ CDOT \ MU (T / D) $
= $ \ sum_ {T | n-m} / T \ CDOT \ varphi (T) $
of $ \ varphi $ linear sieve, the latter half of the original formula can be used o (m), consider first half
= $ \ sum_ {i = 1 } ^ {m} \ sum_ {T | i} \ varphi (T) \ cdot (((i + 1) ^ {3} -1) / T- (i ^ 3 -1) / T) $
= $ \ sum_. 1 = {T m} ^ {} \ varphi (T) \ sum_ {I ^ = {m}. 1 / T} ((+ iT. 1) ^ {-1}. 3 ) / T-(iT ^ 3-1) / T $
= $ \ sum_. 1 = {T m} ^ {} \ varphi (T) \ sum_ {I}. 1 ^ = {m / 3Ti T} ^ {2} + 3i + 1 $
this can also be o (m) are calculated (the latter may be pretreated sigma, the formula can be set), i.e., the total time complexity of O (m)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 10000005 4 #define mod 998244353 5 #define ll __int128 6 int T,m,ans,s1[N],s2[N],vis[N],phi[N],p[N]; 7 char s[101]; 8 int main(){ 9 s1[1]=3; 10 s2[1]=4; 11 phi[1]=1; 12 for(int i=2;i<N-4;i++){ 13 s1[i]=(s1[i-1]+3LL*i*i)%mod; 14 s2[i]=(s2[i-1]+3LL*i+1)%mod; 15 if (!vis[i]){ 16 p[++p[0]]=i; 17 phi[i]=i-1; 18 } 19 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){ 20 vis[i*p[j]]=1; 21 if (i%p[j])phi[i*p[j]]=phi[i]*(p[j]-1); 22 else{ 23 phi[i*p[j]]=phi[i]*p[j]; 24 break; 25 } 26 } 27 } 28 scanf("%d",&T); 29 while (T--){ 30 scanf("%s",s); 31 ll n=0; 32 for(int i=0;s[i];i++)n=n*10+(s[i]-'0'); 33 for(m=1;(ll)m*m*m<=n;m++); 34 m-=2; 35 int ans=0; 36 for(int i=1;i<=m+1;i++) 37 if ((m+1)%i==0)ans=(ans+(n/i-((ll)(m+1)*(m+1)*(m+1)-1)/i)%mod*phi[i])%mod; 38 for(int i=1;i<=m;i++)ans=(ans+1LL*phi[i]*(1LL*i*s1[m/i]+s2[m/i]+mod))%mod; 39 printf("%d\n",ans); 40 } 41 }