Pagini recente » Cod sursa (job #3287636) | Cod sursa (job #1527264) | Cod sursa (job #1924355) | Cod sursa (job #2788135) | Cod sursa (job #3276725)
#include <fstream>
using namespace std;
const int NMAX = 1e6;
ifstream fin("mins.in");
ofstream fout("mins.out");
int c, d;
long long sol, a, b;
bool v[NMAX][2];
int main()
{
fin >> c >> d;
--c, --d;
if(c > d) swap(c, d);
for(int i = 2; i <= c; ++i)
{
if(v[i][0]) continue; /// i nu este divizibil cu patratul unui nr prim
a = 0, b = 0;
if(v[i][1]) /// i nu este prim
{
for(int j = i; j <= d; j += i)
{
if(v[j][0]) v[j][0] = 0;
else v[j][1] = 0, v[j][0] = 1;
if(j <= c) ++a; /// Merg (i, j) si (j, i)
else ++b; /// Merge doar (i, j)
}
sol -= a * (a + b);
}
else /// i este prim
{
for(int j = i; j <= d; j += i)
{
if(v[j][0]) v[j][0] = 0, v[j][1] = 1;
else v[j][0] = 1;
if(j <= c) ++a; ///Merg (i, j) si (j, i)
else ++b; ///Merge doar (i, j)
}
sol += a * (a + b);
}
}
fout << (long long)c*d - sol;
return 0;
}