Pagini recente » Cod sursa (job #2569207) | Cod sursa (job #1838089) | Cod sursa (job #1079355) | Cod sursa (job #2831394) | Cod sursa (job #2949871)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pinex.in");
ofstream fout("pinex.out");
int main()
{
int m;
fin >> m;
for (int i = 1; i <= m; i++)
{
int a, b;
fin >> a >> b;
vector<int> divPrim;
for (int div = 2; div <= b; div++)
if (b % div == 0)
{
divPrim.push_back(div);
while (b % div == 0)
b /= div;
}
int res = 0, size = divPrim.size(), steps = 1 << size;
for (int i = 1; i < steps; i++)
{
int temp = 1, cnt = 0;
for (int p = 0; p < size; p++)
if (i & (1 << p))
temp *= divPrim[p], cnt++;
if (cnt % 2 != 0)
res += a / temp;
else
res -= a / temp;
}
fout << a - res << "\n";
}
return 0;
}