Pagini recente » Cod sursa (job #1499031) | Cod sursa (job #126807) | Cod sursa (job #433642) | Cod sursa (job #934102) | Cod sursa (job #314511)
Cod sursa(job #314511)
#include<cstdio>
#include<cstdlib>
#include<cstring>
int n;
int *marcat;
int main()
{int i,j;
FILE*f=fopen("fractii.in","r");
fscanf(f,"%d",&n);
fclose(f);
marcat=(int*)malloc((n+1)*sizeof(int));
for(i=1;i<=n;++i) marcat[i]=i;
long long sum=1;
for(i=2;i<=n;++i)
{if(marcat[i]!=i) sum+=2*marcat[i];
else
{sum+=2*(i-1);
for(j=i*2;j<=n;j+=i)
marcat[j]=marcat[j]/i*(i-1); //pt i prim,phi(i^q)=(i-1)*i^(q-1) si
//phi(i*j)=phi(i)*phi(j) pt i,j prime intre ele
}
}
FILE *g=fopen("fractii.out","w");
fprintf(g,"%lld",sum);
return 0;
}