Pagini recente » Cod sursa (job #2181585) | Cod sursa (job #2731449) | Cod sursa (job #427255) | Cod sursa (job #2733070) | Cod sursa (job #341957)
Cod sursa(job #341957)
#include <fstream.h>
#include <math.h>
int N,C[10001],T[10001];
ifstream fin("fractii.in");
ofstream fout("fractii.out");
void ciur()
{
long i,j;
for(i=4;i<=N;i=i+2)
C[i]=1;
for(i=3;i<=sqrt(N)+1;i=i+2)
if(C[i]==0)
for(j=i*i;j<=N;j=j+2*i)
C[j]=1;
}
void totient()
{
T[1]=1;
T[2]=1;
long i,j;
i=2;
for(j=2;pow(i,j)<=N;j++)
T[pow(i,j)]=(i-1)*pow(i,j-1);
for(i=3;i<=N;i=i+2)
if(C[i]==0)
for(j=1;pow(i,j)<=N;j++)
T[long(pow(i,j))]=(i-1)*pow(i,j-1);
for(i=6;i<=N;i++)
if(T[i]==0)
for(j=i/2;j>=2;j--)
if(T[j]!=0 && i%j==0 && j%(i/j)!=0 )
{T[i]=T[j]*T[i/j];
j=0;}
}
int main()
{
fin>>N;
ciur();
totient();
long i,S;S=0;
//for(i=1;i<=N;i++)
//fout<<T[i]<<"\n";
for (i=1;i<=N;i++)
S=S+T[i];
fout<<S*2-1;
fin.close();
fout.close();
return 0;
}