Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cmath>
- #include <vector>
- using namespace std;
- ifstream in("puteri4.in");
- ofstream out("puteri4.out");
- vector<int> prime;
- inline double radical(double x, double ord)
- {
- return pow(x, 1.0 / ord);
- }
- unsigned long long f(unsigned long long x, unsigned long long e)
- {
- if(x <= 0)
- return 0;
- unsigned long long ret = 1;
- unsigned long long r;
- for(auto p:prime)
- {
- if(p >= e)
- break;
- r = radical(x, p);
- if(r > 1)
- {
- ret += r;
- ret -= f(r, p);
- }
- }
- return ret;
- }
- unsigned long long query(double x, double y)
- {
- unsigned long long ret = f(y, 60) - f(x-1, 60);
- return ret;
- }
- void ciur()
- {
- const int maxPut = 65;
- static bool compus[maxPut + 1];
- for(int i = 2; i <= maxPut; ++i)
- for(int j = i * i; j <= maxPut; j += i)
- compus[j] = true;
- for(int i = 2; i <= maxPut; ++i)
- if(compus[i] == false)
- prime.push_back(i);
- }
- int main()
- {
- ciur();
- int t;
- double x, y;
- in >> t;
- for(int i = 1; i <= t; ++i)
- {
- in >> x >> y;
- out << query(x, y) << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement