Cod sursa(job #1469635)

Utilizator tancuStancu George tancu Data 8 august 2015 23:15:04
Problema Fractii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<math.h>
FILE *f1,*f2;
int main()
{
int ok;
long double s;
long unsigned fi,n,i,j;
int v[500],nrp=0,p;
double h;
f1=fopen("fractii.in","r");
f2=fopen("fractii.out","w");
fscanf(f1,"%lu\n",&n);
if(n==1)
    s=1;
else
    {
    s=3;
    v[0]=2;
    for (i=3;i<=n;i++)
        {
        j=i;
        fi=i;
        p=0;
        while(j>1)
            {
            ok=0;
            while(!(j%v[p]))
                {
                ok=1;
                j=j/v[p];
                }
            if(ok)
                fi=fi/v[p]*(v[p]-1);else{
            h=sqrt((double)j);
            if((v[p]>h)&&(j>1))
                {
                fi=fi/j*(j-1);
                if((j<1000)&&(j>v[nrp]))
                    v[++nrp]=j;
                j=1;
                } }
            if(p<nrp)
                p++;
            }
        s=s+2*fi;
        }
    }
fprintf(f2,"%.0Lf\n",s);
fclose(f1);
fclose(f2);
return 0;
}