#include #define K 1000000 using namespace std; vector v; long long fact[ K+1 ]; vector pri; void extSieve(){ for( long long i=2; i*i <= K; ++i ){ if( fact[ i ] == 0 ){ for( long long j = i*i ; j <= K ; j+=i ){ if( fact[j ] == 0){ fact[ j ] = i; } } } } for( long long i=2; i<=K; ++i ){ if( fact[ i ] == 0 ){ fact[ i ] = i; v.push_back(i); } } } long long f(long long n){ if(n==1){ return 1; } pri.clear(); long long sz=v.size(); long long aux=n; for(long long i=0; i1){ pri.push_back(aux); } sort(pri.rbegin(),pri.rend()); sz=pri.size(); long long val[sz+10]; val[0]=1; for(long long i=0; i=0; i--){ if(v[i]!=n && n%v[i]==0){ if(n/v[i]>K && espri(n/v[i])){ p=n/v[i]; break; } p=v[i]; break; } } if(p==0){ return n*m; } long long aux=n/p; return (m*n)/aux+f(aux,(m*n)/aux);*/ return sum; } int main(){ extSieve(); long long n,x; cin>>n; long long sum=0; for(long long i=0; i>x; sum=sum+f(x); } cout<