Pagini recente » Cod sursa (job #1205126) | Cod sursa (job #2719772) | Cod sursa (job #2878787) | Cod sursa (job #2734500) | Cod sursa (job #330661)
Cod sursa(job #330661)
#include<fstream>
#include<math.h>
using namespace std;
int prim[1000001];int n;
long totient(long a)
{if(a==1) return 1;
if(prim[a]==1) return (a-1);
else {long div;
for(long k=2;k<=sqrt(a);k++) if(prim[k]==1 && a%k==0) {div=k;break;}
long 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;
long total=0;
for(int i=2;i<=n;i++) total+=totient(i);
total=2*total+1;
out<<total;
return 0;
}