Cod sursa(job #1872900)
Utilizator | Data | 8 februarie 2017 17:47:55 | |
---|---|---|---|
Problema | Fractii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.49 kb |
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
int N, m[1000005];
cin >> N ;
for (int i=0; i<1000005; i++) m[i]=1;
for (int i=2; i<=N; i++)
if (m[i]==1) {
for (int j=i; j<=N; j+=i) m[j]*=i-1;
if (i<1001) {
int y=i*i;
while (y<=N) { for (int j=y; j<=N; j+=y) m[j]*=i; y*=i; }
}
}
long long ans = 0 ;
for (int i=2; i<=N; i++) ans+= m[i];
cout << 1+2*ans << endl;
return 0;
}