Cod sursa(job #194482)
| Utilizator | Data | 11 iunie 2008 13:08:45 | |
|---|---|---|---|
| Problema | Fractii | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include<fstream>
using namespace std;
int phi[1000001], n;
int main(){
int i;
ifstream f("fractii.in");
f>>n;
f.close();
phi[1]=1;
phi[2]=1;
phi[3]=2;
phi[4]=2;
phi[5]=4;
for(i=6;i<=n;i++){
int d=2,cat=1,nr=i;
while(nr%d) d++;
cat=d-1;
nr/=d;
while(nr%d==0&&nr) {
cat*=d;
nr/=d;
}
phi[i]=phi[nr]*cat;
}
long long suma=0;
for(i=2;i<=n;i++)
suma+=phi[i];
suma<<=1;
++suma;
ofstream g("fractii.out");
g<<suma<<'\n';
g.close();
return 0;
}
