Pagini recente » Cod sursa (job #2584725) | Cod sursa (job #2703766) | Cod sursa (job #3285643) | Cod sursa (job #355288) | Cod sursa (job #1736097)
#include <iostream>
#include <fstream>
#include <bitset>
#include <math.h>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n, euler[1000000];
bitset<1000000> neprime;
bool isPrime(int nr)
{
if (nr <= 3)
return nr > 1;
if (nr % 2 == 0 || nr % 3 == 0)
return false;
for (int div = 5; div <= sqrt(nr); div += 6)
if (nr % div == 0 || nr % (div + 2) == 0)
return false;
return true;
}
int main()
{
fin >> n;
int sum = 1; // raportul 1/1
for (int i = 2; i <= n; i++)
{
if(neprime[i] == 0)
for (int j = 2; i*j <= n; j++)
neprime[i*j] = 1;
}
for (int i = 2; i <= n; i++)
{
euler[i] = i;
for (int j = 2; j <= i; j++)
if (i % j == 0 && !neprime[j])
euler[i] *= (1 - 1.0 / j);
//cout << i << " -> " << euler[i] << endl;
sum += 2 * euler[i];
}
fout << sum;
}