Pagini recente » Cod sursa (job #1905338) | Cod sursa (job #2429750) | Cod sursa (job #598343) | Cod sursa (job #699606) | Cod sursa (job #2864383)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("pinex.in");
ofstream fout ("pinex.out");
int p, prim[100];
int n, m, x, sol, prd, cnt;
void divd(int d){
while(m % d == 0){
prim[p++] = d;
m /= d;
}
}
int main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
int teste;
fin>>teste;
while(teste--){
fin>>n>>x;
sol = 0;
p = 0;
m = x;
divd(2);
divd(3);
for(int i=5; i<=m/i; i+=6)
divd(i), divd(i+2);
if(m > 1)
divd(m);
for(int mask=1; mask < (1<<p); mask++){
prd = 1;
cnt = 0;
for(int i=0; i < p; i++)
if(mask & (1<<i)){
prd *= prim[i];
cnt++;
}
if(cnt&1)
sol += n / prd;
else
sol -= n / prd;
}
fout<<n-sol<<"\n";
}
return 0;
}