Pagini recente » Cod sursa (job #2965309) | Cod sursa (job #776353) | Cod sursa (job #540325) | Cod sursa (job #1474209) | Cod sursa (job #3266638)
#include <fstream>
#define NMAX 1000002
using namespace std;
ifstream fin("pinex.in");
ofstream fout("pinex.out");
int M;
long long A,B,ans,nrfct,fct[30],x[30],prod;
void BACK(int k)
{
for(int i=x[k-1]+1; i<=nrfct; i++)
{
x[k]=i;
prod=prod*fct[x[k]];
if(k%2==1)
{
ans=ans-A/prod;
}
else
{
ans=ans+A/prod;
}
BACK(k+1);
}
prod=prod/fct[x[k-1]];
x[k]=0;
}
void rezolvare()
{
int d;
fct[0]=1;
nrfct=0;
d=2;
while(B>1)
{
if(B%d==0)
{
fct[++nrfct]=d;
while(B%d==0)
{
B=B/d;
}
}
d++;
if(B>1 && d*d>B)
{
d=B;
}
}
ans=A;
prod=1;
BACK(1);
fout<< ans << "\n";
}
int main()
{
fin>>M;
for(int q=1; q<=M; q++)
{
fin>>A>>B;
rezolvare();
}
return 0;
}