Pagini recente » Cod sursa (job #2310799) | Cod sursa (job #2629497) | Cod sursa (job #575437) | Borderou de evaluare (job #1330900) | Cod sursa (job #2749007)
#include <fstream>
#include <vector>
int main()
{
std::ifstream f("fractii.in");
int n;
f >> n;
f.close();
std::vector<std::vector<int>> v;
v.resize(n + 1);
long long sum = 0;
for (int i = 2; i <= n; i++)
{
if (v[i].size() == 0)
{
for (int j = i; j <= n; j += i)
{
v[j].push_back(i);
}
}
int s = v[i].size();
for (int j = 1; j < (1 << s); j++)
{
int sgn = -1, prod = 1;
for (int k = 0; k < s; k++)
{
if (j & (1 << k))
{
prod *= v[i][k];
sgn *= -1;
}
}
sum += ((sgn) * ((n / prod) - (i / prod)));
}
}
sum = (n * 1ll * n) - (sum * 2 + n) + 1;
std::ofstream g("fractii.out");
g << sum << std::endl;
g.close();
return 0;
}