Pagini recente » Solutii Autumn Warmup, Runda 3 | Cod sursa (job #3178274) | Cod sursa (job #2061377) | Cod sursa (job #16786) | Cod sursa (job #5521)
Cod sursa(job #5521)
#include <stdio.h>
#include <string.h>
#define maxn 1000001
#define maxp 80000
long n,i,j,len,st[maxp],p[maxp];
char fol[maxn];
float euler[maxn];
long long sol=1;
void readdata()
{
FILE *f = fopen("fractii.in","rt");
fscanf(f,"%ld",&n);
fclose(f);
}
void solve()
{
memset(fol,1,sizeof(fol));
for (i=1;i<=n;i++) euler[i]=i;
len=0;
i=1;
while (i<n)
{
i++;
if (fol[i])
{
len++;
st[len]=i;
euler[i]=i-1;
j = i;
while (i+j<=n)
{
j+=i;
fol[j]=0;
euler[j]=euler[j]*(i-1)/i;
}
}
}
for (i=2;i<=n;i++)
{
sol+=2*(long long)euler[i];
}
}
void writedata()
{
FILE *f = fopen("fractii.out","wt");
fprintf(f,"%lld",sol);
fclose(f);
}
int main()
{
readdata();
solve();
writedata();
return 0;
}