Pagini recente » Cod sursa (job #200525) | Cod sursa (job #1696490) | Cod sursa (job #1799149) | Cod sursa (job #1711076) | Cod sursa (job #1988098)
#include <fstream>
using namespace std;
const int dimension = 1000010;
ifstream f("fractii.in");
ofstream g("fractii.out");
bool vec[1000010];
int ciur[1000010],n;
long long s;
void Ciur()
{
vec[0] = vec[1] = true;
for (int i = 2;i <= dimension;i++)
{
if (vec[i] == false)
{
int k = 2;
while (i*k <= dimension)
{
vec[i*k] = true;
k++;
}
}
}
int j = 0;
for (int i = 2;i <= dimension;i++)
if (vec[i] == false)
ciur[++j] = i;
}
double Number_of_specials(int x)
{
double prod = x;
if (x == 1)
return 0;
if (vec[x] == false)
return x - 1;
for (int i = 1;ciur[i] * ciur[i] <= x;i++)
{
if (x%ciur[i] == 0)
{
prod = prod*(1.0*(ciur[i] - 1) / ciur[i]);
if(ciur[x/ciur[i]] == false)
prod = prod*(1.0*(x/ciur[i] - 1) / (x/ciur[i]));
}
}
return prod;
}
long long Number_of_fractions(int n)
{
for (int i = 1;i <= n;i++)
s += Number_of_specials(i);
return 2*s+1;
}
int main()
{
Ciur();
f >> n;
g << Number_of_fractions(n) << "\n";
f.close();
g.close();
return 0;
}