Pagini recente » Cod sursa (job #1321012) | Cod sursa (job #2744321) | Cod sursa (job #1747918) | Cod sursa (job #2878580) | Cod sursa (job #330658)
Cod sursa(job #330658)
#include<fstream>
#include<math.h>
using namespace std;
int prim[1000001];int n;
double totient(int a)
{if(a==1) return 1;
if(prim[a]==1) return (a-1);
else {int div;
for(int k=a-1;k>=2;k--) if(prim[k]==1 && a%k==0) {div=k; break;}
int contor=0,piv=a;
while(piv%div==0){contor++;piv=piv/div;}
return pow(div,contor-1)*(div-1)*totient(piv);
}
}
int main()
{ifstream in("fractii.in");
ofstream out("fractii.out");
in>>n;
for(int i=1;i<=n;i++) prim[i]=1;
for(int i=2;i<=n;i++)
if(prim[i]==1) for(int j=i+i;j<=n;j+=i)
prim[j]=0;
int total=0;
for(int i=2;i<=n;i++) total+=totient(i);
total=2*total+1;
out<<total;
return 0;
}