Pagini recente » Monitorul de evaluare | Cod sursa (job #571837) | Istoria paginii utilizator/eduardmircea | Cod sursa (job #289350) | Cod sursa (job #749649)
Cod sursa(job #749649)
#include <stdio.h>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
#ifdef _WIN32
#define TYPEOF decltype
#else
#define TYPEOF typeof
#endif
#define FOR(i,s,e) for(int i = s;i < e; i++)
#define TR(i, c) for(TYPEOF(c.begin()) i = c.begin(); i != c.end(); ++i)
#define TRS(i, c, ...) TR(__itr, c) { TYPEOF(*c.begin()) &i = *__itr; __VA_ARGS__ }
#define TRP(f, s, c, ...) TR(__itr, c) { TYPEOF(c.begin()->first) &f = __itr->first; TYPEOF(c.begin()->second) &s = __itr->second; __VA_ARGS__ }
#define MAXN 1000007
long long p[MAXN], q[MAXN];
int main()
{
#if 1
freopen("fractii.in", "r", stdin);
#ifndef MY_STUFF
freopen("fractii.out", "w", stdout);
#endif
#endif
int n = 1000000;
//scanf("%d", &n);
for(int i = 0; i <= n; i++)
p[i] = 1, q[i] = 1;
long long s = 0;
for(int i = 2; i <= n; i++) {
int t;
if(q[i] == 1) {
t = (i-1);
for(int j = i+i; j <= n; j+=i) {
p[j] *= i - 1;
q[j] *= i;
}
} else {
t = i*p[i]/q[i];
}
s += t;
}
printf("%lld\n", 1+2*s);
return 0;
}