Pagini recente » Cod sursa (job #1670894) | Cod sursa (job #110561) | Cod sursa (job #1045195) | Cod sursa (job #795149) | Cod sursa (job #2246389)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct{
int numar,putere;
}pereche;
void descompunereFactoriPrimi(pereche*v,int*dim,int n){
*dim=0;
int d=2;
while(n>1){
pereche p;
p.numar=d;
p.putere=0;
while(n%d==0){
++p.putere;
n/=d;
}
if(p.putere!=0){
v[(*dim)++]=p;
}
d++;
}
}
int fi(int n){
pereche*v=(pereche*)malloc(sizeof(pereche)*10000);
int dim=0,i=0,phi=1;
descompunereFactoriPrimi(v,&dim,n);
for(i=0;i<dim;++i){
phi*=(v[i].numar-1)*pow(v[i].numar,v[i].putere-1);
}
return phi;
}
int main()
{
int n=0,err=0,i=0,result=0,anteriorResult=0;
FILE*fp;
fp=fopen("fractii.in","r");
if(fp==NULL)
perror("Eroare la deschiderea fisierului pentru citire!");
err=fscanf(fp,"%d",&n);
if(err==-1)
perror("Eroare la citire!");
fclose(fp);
for(i=1;i<=n;++i){
if(i==1)
result=1;
else{
result=2*fi(i)+anteriorResult;
}
anteriorResult=result;
}
fp=fopen("fractii.out","w");
if(fp==NULL)
perror("Eroare la deschiderea fisierului pentru scriere!");
fprintf(fp,"%d",result);
fclose(fp);
return 0;
}