Pagini recente » Cod sursa (job #2248940) | Cod sursa (job #32856) | Cod sursa (job #844069) | Cod sursa (job #2215759) | Cod sursa (job #1258482)
//phi(n)=n*PROD((p-1)/p), p prim
#include <stdio.h>
#define MAXN 1000000
long long phi[MAXN+1];
inline void ciur(int n){
int i, j;
for(i=2; i<=n; i++){
phi[i]=i;
}
for(i=2; i<=n; i++){
if(phi[i]==i){//phi[i] nu s-a modificat, deci e prim
for(j=i; j<=n; j+=i){
phi[j]=phi[j]/i*(i-1);//i e prim iar phi[j]=n*PROD((p-1)/p), p prim
}
}
}
for(i=2; i<=n; i++){
phi[i]+=phi[i-1];//sume partiale tot pe vectorul phi
}
}
int main(){
int n;
FILE *fin, *fout;
fin=fopen("fractii.in", "r");
fout=fopen("fractii.out", "w");
fscanf(fin, "%d", &n);
ciur(n);
fprintf(fout, "%lld\n", 2*phi[n]+1);
fclose(fin);
fclose(fout);
return 0;
}