Pagini recente » Cod sursa (job #2146360) | Cod sursa (job #2578176) | Cod sursa (job #2577271) | Cod sursa (job #2216137) | Cod sursa (job #3326187)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pinex.in");
ofstream g("pinex.out");
long long t,a,b,divi[100010],rez,cate,lim;
int main() {
f>>t;
while(t--) {
f>>a>>b;
cate=0;
for(int i=2; i*i<=b; i++) {
if(b%i==0) {
divi[++cate]=i;
while(b%i==0) {
b/=i;
}
}
}
if(b>1) {
divi[++cate]=b;
}
lim=(1<<cate);
rez=a;
for(int i=1; i<lim; i++) {
long long k=0,cat=1;
for(long long j=0; (1<<j)<=i; j++) {
if(i&(1<<j)) {
k++;
cat*=divi[j+1];
}
}
if(k%2==0) {
rez+=a/cat;
} else {
rez-=a/cat;
}
}
g<<rez<<'\n';
}
f.close();
g.close();
return 0;
}