#include #define LIM 1000000 #define pb push_back #define ll long long int using namespace std; bool isPrime[LIM+100]; vectorprimes; int sz; void genSieve() { primes.clear(); memset(isPrime, 0, sizeof(isPrime)); isPrime[0] = isPrime[1] = 1; for(int i=4; i<=LIM; i+=2) isPrime[i] = 1; int sq = sqrt(LIM); for(int i=3; i<=sq; i+=2) { if(!isPrime[i]) { for(int j=i+i; j<=LIM; j+=i) isPrime[j] = 1; } } primes.pb(2); for(int i=3; i<=LIM; i+=2) if(!isPrime[i]) primes.pb(i); sz = primes.size(); } ll f(ll num) { ll ans = 1; for(int i=0; i 1; i++) { int p = primes[i]; // if(num&p) continue; while(num%p == 0) { ans = ans * p + 1; num /= p; } } if(num > 1) ans = ans*num + 1; return ans; } int main() { genSieve(); // cout << sz << endl; int n; ll ans = 0; scanf("%d", &n); for(int i=0; i