Pagini recente » Cod sursa (job #2978932) | Cod sursa (job #1671428) | Cod sursa (job #422279) | Cod sursa (job #1235137) | Cod sursa (job #3222362)
#include <bits/stdc++.h>
#define QED fin.close(); fout.close(); return 0;
using namespace std;
const int VMAX = 1000006;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
#define cin fin
#define cout fout
int v[VMAX + 1];
void ciur(int n)
{
for(int i = 2; i <= n; i ++)
v[i] = i;
for(int i = 2; i <= n; i++)
if(v[i] == i)
for(int j = 1; i * j <= n; j++)
v[i * j] -= v[i * j] / i;
}
int main()
{
ciur(VMAX);
long long s=0;
int n;
cin >> n;
for(int i=1; i<=n; i++)
{
s+=v[i];
}
s=s*2+1;///observam ca se repeta fractia (cand e inversa) si ar fi 2*(s+1), doar ca s-ar repeta unul din ele deci e 2s+1
///am mai intalnit o problema asemanatoare acum 2 sedinte cred
cout<<s;
QED
}