Pagini recente » Cod sursa (job #1744182) | Istoria paginii utilizator/carmenstoian | Cod sursa (job #248996) | Cod sursa (job #2616988) | Cod sursa (job #1150888)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int p[1000];
int max=2, count;
int notmultofp(int k)
{
for(int i=0; i<count; i++)
if(!(k%p[i]))
return 0;
return 1;
}
int primes(int k)
{
int i=max+1;
max=k;
for(; i<=k; i++)
if(notmultofp(i))
{
p[count]=i;
count++;
if(i==k) return 1;
}
if(k<3)
{
if(k==2)
{p[count]=k; count++;}
return 1;
}
return 0;
}
int euler(int k)
{
if(primes(k))
return k-1;
else
{
float f=k;
for(int i=0; i<count; i++)
if(!(k%p[i]))
f*=(1-(1/((float)p[i])));
return ceil(f);
}
}
int main()
{
FILE *fi, *fo;
int N, r=1;
fi=fopen("fractii.in", "r");
fo=fopen("fractii.out","w");
fscanf(fi, "%d", &N);
if(N!=1)
for(int i=1; i<=N; i++)
r+=2*euler(i);
fprintf(fo, "%d", r);
return 0;
}