Pagini recente » Cod sursa (job #1361598) | Cod sursa (job #801967) | Cod sursa (job #1872769) | Cod sursa (job #879305) | Cod sursa (job #2951767)
#include <fstream>
using namespace std;
ifstream fin ("pinex.in");
ofstream fout ("pinex.out");
int v[100005],x,i,j,d,ii,m,a,b,s,k,nr,l[100005],nrc,pr,di[100005];
bool ciur[1000005];
int main()
{
ciur[1]=1;
for (i=2; i<=1000000; i++)
{
if (ciur[i]==0)
{
v[++k]=i;
if (i<=10000)
{
for (j=i*i; j<=1000000; j=j+i)
ciur[j]=1;
}
}
}
fin>>m;
for (ii=1; ii<=m; ii++)
{
for (j=1; j<=nr+1; j++)
l[j]=0;
s=0;
fin>>a>>b;
x=b;
nr=0;
for (d=1; d<=k&&v[d]*v[d]<=x; d++)
{
if (x%v[d]==0)
{
di[++nr]=v[d];
while (x%v[d]==0)
x=x/v[d];
}
}
if (x!=1)
di[++nr]=x;
while (l[nr+1]==0)
{
nrc=0;
pr=1;
for (i=1; i<=nr+1; i++)
{
if (l[i]==1)
l[i]=0;
else
{
l[i]=1;
break;
}
}
if (l[nr+1]==0)
{
for (i=1; i<=nr; i++)
{
if (l[i]==1)
{
pr=pr*di[i];
nrc++;
}
}
if (nrc%2==0)
s=s-a/pr;
else
s=s+a/pr;
}
}
fout<<a-s<<"\n";
}
return 0;
}