Cod sursa(job #2138143)

Utilizator banutraul1234567Banut Raul Emanuel banutraul1234567 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;
}