Cod sursa(job #2555306)

Utilizator Florinos123Gaina Florin Florinos123 Data 23 februarie 2020 21:16:31
Problema Fractii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

ifstream f ("fractii.in");
ofstream g ("fractii.out");

int i, n, k, prime[1005];
long long rez;
bool ciur[1505];

void Eratosthene ()
{
  int i, j;
  ciur[1] = 1;
   for (i=2; i<=1000; i++)
   {
       if (ciur[i] == 0)
       {
           k ++, prime[k] = i;
            for (j=i+i; j<=1000; j+=i)
                ciur[j] = 1;
       }
   }
}

int phi(int x)
{
  long long rez = x;
  int i;
   for (i=1; prime[i]*prime[i] <= x && i <= k; i++)
   {
       if (x % prime[i] == 0)
       {
            while (x % prime[i] == 0)
                x /= prime[i];
         rez = rez * (prime[i] - 1) / prime[i];
       }
   }
  if (x > 1)
    rez = rez * (x - 1) / x;
  return rez;
}

int main()
{
 Eratosthene();
 f >> n;
 rez = 1;
  for (i=2; i<=n; i++)
    rez += 2 * phi(i);
  g << rez;
    return 0;
}