Pagini recente » Cod sursa (job #324065) | Cod sursa (job #45857) | Cod sursa (job #1914779) | Cod sursa (job #527832) | Cod sursa (job #1339563)
#include <fstream>
#include <cstring>
#define DIM 1000005
using namespace std;
ifstream fin("pinex.in");
ofstream fout("pinex.out");
long long n,i,x,j,p[DIM],s[DIM],y,t,sol,unu,k,a,b,tt;
bool v[DIM],f[DIM];
int main(){
for(i=2;i<=DIM;i++){
if(v[i]==0){
p[++x]=i;
for(j=2;j*i<=DIM;j++){
v[i*j]=1;
}
}
}
fin>>tt;
for(y=1;y<=tt;y++){
fin>>a>>b;
sol=0;n=0;
for(i=1;i<=x && p[i]<b;i++){
if(b%p[i]==0){
s[++n]=p[i];
while(b%p[i]==0){
b/=p[i];
}
}
}
if(b>1){
s[++n]=b;
}
while(f[0]==0){
t=n;
while(f[t]==1){
f[t]=0;
t--;
}
f[t]=1;
unu=0;k=1;
for(i=1;i<=n;i++){
if(f[i]==1){
unu++;
k*=s[i];
}
}
if(unu%2==0){
sol+=a/k;
}
else{
sol-=a/k;
}
}
fout<<sol<<"\n";
memset(f,0,sizeof(f));
}
return 0;
}