Pagini recente » Cod sursa (job #2457626) | Istoria paginii runda/abac/clasament | Cod sursa (job #1066155) | Cod sursa (job #2449837) | Cod sursa (job #1150988)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long long p[1000000000000];
long long fi[1000000000000];
long long count;
long long euler(long long k)
{
if(k<4)
{
p[count]=k;
fi[k]=k-1;
count++;
return k-1;
}
else
{
long long prim=1, aux=k, i=0;
long double f=k;
while(i<count && aux>1)
{
if(aux%p[i]==0)
{
f*=((long double)fi[p[i]])/((long double)p[i]);
while(aux%p[i]==0) aux/=p[i];
prim=0;
}
i++;
}
if(!prim)
{
fi[k]=ceil(f);
return fi[k];
}
else
{
p[count]=k;
fi[k]=k-1;
count++;
return k-1;
}
}
}
int main()
{
FILE *fi, *fo;
long long N, r=1;
fi=fopen("fractii.in", "r");
fo=fopen("fractii.out","w");
fscanf(fi, "%lld", &N);
if(N!=1)
for(long long i=2; i<=N; i++)
{
r+=2*euler(i);
if(r==60786971)
printf("!Hello!");
}
fprintf(fo, "%lld", r);
fclose(fi);
fclose(fo);
return 0;
}