Pagini recente » Diferente pentru utilizator/rapunzel intre reviziile 15 si 9 | Diferente pentru runda/problemiada_17 intre reviziile 2 si 1 | Cod sursa (job #639508) | Monitorul de evaluare | Cod sursa (job #1434921)
// Fractii.cpp : Defines the entry point for the console application.
//
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <vector>
#include "fstream";
using namespace std;
#define NMAX 1000005
int euler[NMAX];
int ciur2(int n)
{
int s = 0;
for (int i = 2; i <= n; ++i)
euler[i] = i;
for (int i = 2; i <= n; i++)
if (euler[i] == i)
for (int j = i; j <= n; j += i){
euler[j] /= i;
euler[j] *= (i - 1);
}
for (int i = 1; i <= n; i++)
s += euler[i];
s = 2 * s + 1;
return s;
}
long long ciur(int n)
{
for (int i = 2; i <= n; i++)
euler[i] = i;
long long suma = 0;
for (int i = 2; i <= n; i+=1)
{
if (euler[i] == i)
{
for (int prim = i; prim <= n; prim += i)
{
euler[prim] = euler[prim] * (i - 1) / i;
}
}
suma += euler[i];
}
suma = 2 * suma + 1;
return suma;
}
int main()
{
ifstream input("fractii.in");
ofstream output("fractii.out");
int n;
input >> n;
int result = ciur(n);
output << result;
input.close();
output.close();
return 0;
}