Cod sursa(job #2138143)
Utilizator | Data | 21 februarie 2018 13:29:03 | |
---|---|---|---|
Problema | Fractii | Scor | 30 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 0.93 kb |
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
int prim(int a)
{
int i;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;
}
int main()
{
int i,m,w=0,k=0,p[10000],pw[10000],n,fi,nr=0,j;
f=fopen("fractii.in","r");
g=fopen("fractii.out","w");
fscanf(f,"%d",&n);
for(j=n;j>1;j--){
m=j;
k=0;
if(prim(j)==1)
fi=j-1;
else{
for(i=2;m!=1;i++){
if(m%i==0){
while(m%i==0){
m/=i;
w++;
}
pw[k]=w;
p[k++]=i;
w=0;
}
}
for(i=0,fi=1;i<k;i++)
{
fi*=(p[i]-1)*pow(p[i],pw[i]-1);
}
}
nr+=fi*2;
}
nr++;
fprintf(g,"%d",nr);
return 0;
}