#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 t; while (cin >> t) { LL s = 1; for (LL i = 2; i <= 64; i++) s -= mu[i] * (LL)(pow(t * 1.0, 1.0 / i) - 1); cout << s << endl; } return 0; }