#include using namespace std; #define LL long long const int N = 100 + 100; LL mu[N], sum[N]; int primes[N], cnt; bool st[N]; void get_mobius(LL n) { mu[1] = 1; for (LL i = 2; i <= n; i++) { if (!st[i]) { primes[cnt++] = i; mu[i] = -1; } for (LL j = 0; primes[j] <= n / i; j++) { LL t = primes[j] * i; st[t] = true; if (i % primes[j] == 0) { mu[t] = 0; break; } mu[t] = mu[i] * -1; } } // 维护u(x)前缀和 for (LL i = 1; i <= n; i++) sum[i] = sum[i - 1] + mu[i]; } int main() { get_mobius(N - 1); LL tmp; while (cin >> tmp) { LL sum = 1; for (LL i = 2; i <= 64; i++) { sum -= mu[i] * (LL)(pow(tmp * 1.0, 1.0 / i) - 1); } cout << sum << endl; } return 0; }