Pagini recente » Cod sursa (job #338757) | Istoria paginii runda/winner15 | Cod sursa (job #500895) | Cod sursa (job #127915) | Cod sursa (job #1195071)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream input("fractii.in");
ofstream output("fractii.out");
int n = 0;
input >> n;
int sieve[n+1];
for (int i = 0; i <= n+1; i++) {
sieve[i] = 1;
}
for (int i = 2; i <= n; i++) {
for (int j = 2; j * i <= n; j++) {
sieve[j*i] = 0;
}
}
int primes[n+1], primeCount = 0;
for (int i = 2; i <= n; i++) {
if (sieve[i] == 1) {
primes[primeCount++] = i;
}
}
long long phi[n+1];
for (int i = 2; i <= n; i++) {
phi[i] = i;
for (int j = 0; primes[j] <= n && j < primeCount; j++) {
if (i % primes[j] == 0) {
phi[i] = phi[i] * (primes[j] - 1) / primes[j];
}
}
}
long long sum = 0;
for (int i = 2; i <= n; i++) {
sum += phi[i];
}
cout << sum * 2 + 1 << endl;
output << sum * 2 + 1 << endl;
return 0;
}