Pagini recente » Cod sursa (job #1891414) | Cod sursa (job #758131) | Cod sursa (job #743757) | Cod sursa (job #845769) | Cod sursa (job #2036073)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream in("mins.in");
ofstream out("mins.out");
long long c, d;
in >> c >> d;
--c, --d;
long long mn = min(c, d);
vector<int> divizori(mn + 1, 0);
vector<bool> bun(mn + 1, true);
for(long long i = 2; i <= mn; ++i)
if(!divizori[i])
{
for(long long j = i; j <= mn; j += i)
divizori[j]++;
for(long long j = i * i; j <= mn; j += (i * i))
bun[j] = false;
}
long long sol = c * d;
for(int i = 2; i <= mn; ++i)
if(bun[i])
{
if(divizori[i] % 2 == 0)
sol += (c / i) * (d / i);
else
sol -= (c / i) * (d / i);
}
out << sol;
in.close();
out.close();
return 0;
}