// // Created by HakuroKawashiro on 2024/8/2. // #include #include #include #include #include #include #define ll long long #define db double using namespace std; int main() { ll n; scanf("%lld",&n); vector dival; dival.push_back(n); for (ll i = 2;i * i <= n;i++) { if (n % i == 0) { dival.push_back(i); if (i * i != n) { dival.push_back(n / i); } } } sort(dival.begin(), dival.end()); ll top = dival.size(); map dp; map val; for (ll x : dival) { ll res = x - 1; db pro_val = x * 1.0 / res; db real_val = 0.0; for (ll y : dival) { if (y >= x) { break; } if (x % y == 0) { res -= val[x / y]; db sub_val = val[x / y] * 1.0 / (x - 1); real_val += sub_val * dp[y]; } } val[x] = res; real_val += pro_val; dp[x] = real_val; } printf("%.12lf\n",dp[n]); return 0; }