Pagini recente » Cod sursa (job #2941643) | Cod sursa (job #454254) | Cod sursa (job #2906867) | Cod sursa (job #717339) | Cod sursa (job #3200791)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("pinex.in");
ofstream fout ("pinex.out");
int n, a, b, r;
int d[55], nrd;
void div(int a)
{
nrd = 0;
int ca = a;
for(int i = 2 ; i <= ca && a > 0 ; i++)
{
if(a % i == 0)
{
nrd++;
d[nrd] = i;
}
while(a % i == 0)
a = a / i;
}
}
void bkt(int ind, int prod, int nrprod)
{
if(nrprod % 2 == 0 && nrprod != 0)
r += a / prod;
if(nrprod % 2 != 0 && nrprod != 0)
r -= a / prod;
for(int i = ind ; i <= nrd ; i++)
{
bkt(i + 1, prod * d[i], nrprod + 1);
}
}
int main()
{
fin >> n;
while(n > 0)
{
n--;
fin >> a >> b;
div(b);
r = a;
bkt(1, 1, 0);
fout << r << '\n';
}
return 0;
}