Pagini recente » Cod sursa (job #2841676) | Cod sursa (job #2068997) | Cod sursa (job #2689891) | Cod sursa (job #1773992) | Cod sursa (job #1970153)
#include <fstream>
using namespace std;
ifstream f("pinex.in");
ofstream g("pinex.out");
#define ll long long
int dprim[100];
int fprim[100001];
bool prim[100001];
int sol[100];
ll rez, prod, nr;
ll a, b;
void ciur(){
int i, j, k;
k = 0;
for(i = 2; i * i <= 100000; i++)
if(!prim[i]){
fprim[++k] = i;
for(j = i * i; j <= 100000; j += i)
prim[j] = true;
}
}
void bt(int p, int k){
int i;
if(p > k){
int coef;
if(nr > 0){
if(nr % 2 == 0)
coef = -1;
else
coef = 1;
rez = rez + coef * a / prod;
}
}
else{
for(i = 0; i <= 1; i++){
nr += i;
if(i == 1)
prod *= dprim[p];
bt(p+1,k);
nr -= i;
if(i == 1)
prod /= dprim[p];
}
}
}
ll rezolva(){
int d, k;
k = 0;
d = 1;
while(b > 1){
if(b % fprim[d] == 0){
dprim[++k] = fprim[d];
while(b % fprim[d] == 0)
b /= fprim[d];
}
d++;
}
rez = 0;
nr =0;
prod = 1;
bt(1,k);
return a - rez;
}
int main()
{
int n, i;
f >> n;
ciur();
for(i = 1; i <= n; i++){
f >> a >> b;
g << rezolva() << '\n';
}
return 0;
}