Pagini recente » Cod sursa (job #501942) | Cod sursa (job #524658) | Cod sursa (job #1430725) | Cod sursa (job #1161063) | Cod sursa (job #2781291)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000000
int ciur[MAXN + 1];
int phi(int i){
int p, imp, tci, ci;
ci = i;
p = 1;
imp = 1;
tci = 0;
while(ciur[i] != 0){
if(ciur[i] != tci){
p = p * (ciur[i] - 1);
imp = imp * ciur[i];
tci = ciur[i];
}
i /= ciur[i];
}
if(i != tci){
p = p * (i - 1);
imp = imp * i;
}
return (ci / imp) * p;
}
int main()
{
FILE *fin, *fout;
int n, i, j;
long long s;
fin = fopen("fractii.in", "r");
fscanf(fin, "%d", &n);
fclose(fin);
for(i = 2; (i * i) <= n; i++){
if(ciur[i] == 0){
for(j = i * i; j <= n; j += i){
if(ciur[j] == 0){
ciur[j] = i;
}
}
}
}
s = 1;
for(i = 2; i <= n; i++){
s = s + phi(i) * 2;
}
fout = fopen("fractii.out", "w");
fprintf(fout, "%lld", s);
fclose(fout);
return 0;
}