Pagini recente » Cod sursa (job #25364) | Cod sursa (job #1754965) | Cod sursa (job #2717204) | Cod sursa (job #2717203) | Cod sursa (job #3143037)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int prim[1000],er[1006];
int euler(int n)
{
int k=168;
int rez=1;
for(int i=0;prim[i]*prim[i]<=n && i<k;i++)
{
if(n%prim[i]==0)
{
int nr=0;
while(n%prim[i]==0)
{
nr++;
n/=prim[i];
}
rez*=(prim[i]-1)*pow(prim[i],nr-1);
}
}
if(n!=1)
{
rez*=n-1;
}
return rez;
}
int main()
{
ifstream cin("fractii.in");
ofstream cout("fractii.out");
for(int i=2;i<=1000;i++)
{
if(!er[i])
{
for(int j=i+i;j<=1000;j+=i)
{
er[j]=1;
}
}
}
int k=0;
for(int i=2;i<=1000;i++)
{
if(!er[i])
{
prim[k++]=i; }
}
int n;
cin>>n;
int rez=0;
rez=2*n-1;
for(int i=2;i<=n;i++)
{
rez+=2*euler(i)-2;
}
cout<<rez;
return 0;
}