Pagini recente » Cod sursa (job #2715417) | Cod sursa (job #1051246) | Cod sursa (job #3290384) | Cod sursa (job #1059949) | Cod sursa (job #29832)
Cod sursa(job #29832)
#include <stdio.h>
#include <string.h>
#include <math.h>
unsigned long long prim[1000000],n;
void prime(){unsigned long long i;
for(i=2;i<=n;i++)prim[i]=1;
for(i=2;i*i<=n;i++){
if(prim[i]){int j=2;
while(i*j<=n){
prim[i*j]=0;
j++;
}
}
}
}
unsigned long long cate(unsigned long long x){
unsigned long long d=2,divizor,exp=0;int stop=0;
if(prim[x]) return x-1;
else {
for(d=2;d*d<=n && !stop;d++){
if(x%d==0){ divizor=d;stop=1;}
}
while(x%divizor==0){
exp++;x/=divizor;}
}
return (divizor-1)*pow(divizor,exp-1);
}
int main(){unsigned long long i,tot=0;
FILE *f=fopen("fractii.in","rt");
FILE *g=fopen("fractii.out","wt");
fscanf(f,"%lld",&n);
prime();
for(i=2;i<=n;i++){
tot+=2*cate(i)+1;
}
fprintf(g,"%lld",tot);
fclose(g);
return 0;
}