Pagini recente » Cod sursa (job #1319780) | Cod sursa (job #758020) | Cod sursa (job #1639703) | Cod sursa (job #2471471) | Cod sursa (job #1699514)
#include <stdio.h>
#include <stdlib.h>
#define MAXDIV 100
long long dvz[MAXDIV], ind;
int main(){
long long m, a, b, i, j;
long long rez=0;
FILE*fi,*fo;
fi=fopen("pinex.in","r");
fo=fopen("pinex.out","w");
fscanf(fi,"%lld", &m);
for(i=0;i<m;i++){
fscanf(fi,"%lld%lld", &a, &b);
rez=0;
ind=0;
long long d=2;
while(d*d<=b){
if(b%d==0){
dvz[ind++]=d;
while(b%d==0)
b/=d;
}
d++;
}
if(b>1)
dvz[ind++]=b;
for(j=1;j<(1<<ind);j++){
long long k, cmmmc=1, nrbit=0;
for(k=0;k<=ind;k++){
if(j&(1<<k)){
nrbit++;
cmmmc*=dvz[k];
}
}
if(nrbit%2==1)
rez+=a/cmmmc;
else
rez-=a/cmmmc;
}
fprintf(fo,"%lld\n", a-rez);
}
fclose(fi);
fclose(fo);
return 0;
}