Pagini recente » Cod sursa (job #2645859) | Cod sursa (job #2563014) | Cod sursa (job #2188004) | Cod sursa (job #1159152) | Cod sursa (job #2595410)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int>ciur;
vector<int>prime;
bool viz[1000005];
long long r=0;
void fciur()
{
for(int i=2; i<=1000000; i++)
if(viz[i]==0)
{
ciur.push_back(i);
for(int j=i+i; j<=1000000; j+=i)
viz[j]=1;
}
}
void rez(long long a)
{
int s=prime.size();
for(int i=1; i< (1<<s); i++)
{
int cont=0;
long long prod=1;
for(int j=0; j<s; j++)
if((1<<j) & i)
{
++cont;
prod*=prime[j];
}
if(cont%2)
r+=a/prod;
else
r-=a/prod;
}
}
int main()
{
ifstream f("pinex.in");
ofstream g("pinex.out");
ios::sync_with_stdio(false);
f.tie(0);
g.tie(0);
fciur();
int m;
f>>m;
for(int i=1; i<=m; i++)
{
long long a,b;
f>>a>>b;
prime.clear();
r=0;
for(auto x:ciur)
{
if(b%x==0)
{
prime.push_back(x);
while(b%x==0)
b/=x;
}
}
if(b>1)
prime.push_back(b);
rez(a);
g<<1LL*(a-r)<<"\n";
}
return 0;
}