Cod sursa(job #761345)

Utilizator andreimaresuMaresu Andrei andreimaresu Data 25 iunie 2012 17:55:52
Problema Fractii Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<math.h>
long int prim(long int n){
    int i;
    for(i=2;i<=sqrt(n);i++)
    if(n%i==0) return 0;
    return 1;
}
long int numara(long int x,long int n)
{   int ok,k;
    long int i,nr=1,a[1000],j=0;
        for(i=2;i<=x/2;i++){
            if(x%i==0) {a[j+1]=i;
                        j++;
            }
        }
        for(i=2;i<=n;i++){
            ok=1;
            for(k=1;k<=j;k++)
                if(i%a[k]==0)  ok=0;
                if(ok) nr++;
        }
    return nr;
}
int main(){
long int n,s,i;
FILE *f=fopen("fractii.in","r"),*g=fopen("fractii.out","w");
fscanf(f,"%ld",&n);
if(n==1) fprintf(g,"%d",1);
else    {s=n;
        for(i=2;i<=n;i++)
        {
            if(prim(i)) s+=n-n/i;
                else s+=numara(i,n);
        }
        }
fprintf(g,"%ld",s);
fclose(f);
fclose(g);
return 0;
       }