Pagini recente » Cod sursa (job #1346206) | Cod sursa (job #2144230) | Cod sursa (job #2298786) | Cod sursa (job #1835133) | Cod sursa (job #1193847)
#include <fstream>
#define Max_P 1000000
#define LL long long
using namespace std;
ifstream fin("pinex.in");
ofstream fout("pinex.out");
int nr, Nr_Prim[100000], Fact[33];
LL A, B, SOL;
bool prim[Max_P];
int main()
{
fin >> nr;
for (int i = 2; i <= Max_P; i++)
{
if (!prim[i])
{
Nr_Prim[++Nr_Prim[0]] = i;
for (int j = i*2; j <= Max_P; j+=i)
prim[j] = 1;
}
}
for (int k = 1; k <= nr; k++)
{
fin >> A >> B;
int d = 1, t = 0;
while (B > 1)
{
if (B % Nr_Prim[d] == 0)
{
while (B % Nr_Prim[d] == 0)
{
B /= Nr_Prim[d];
}
Fact[++t] = Nr_Prim[d];
}
d++;
}
SOL = A;
for (int i = 1; i <= (1 << t) - 1; i++)
{
LL w = 0, Prod = 1;
for (int j = 0; j <= t - 1; j++)
{
if ((1 << j) & i)
{
Prod *= Fact[j + 1];
w++;
}
}
if (w % 2) w = -1;
else w = 1;
SOL += w * A / Prod;
}
fout << SOL << '\n';
}
fout.close();
return 0;
}