Pagini recente » Cod sursa (job #1934515) | Cod sursa (job #3243278) | Cod sursa (job #2664447) | Cod sursa (job #1616817) | Cod sursa (job #314510)
Cod sursa(job #314510)
#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;
int p,k;
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;
}