Cod sursa(job #1404443)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 28 martie 2015 10:54:24
Problema Sum Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <ctype.h>
#define MAX 100000
int fi[MAX+1];
FILE *fin;
inline void ciur(){
    int i, j;
    for(i=1; i<=MAX; i++){
        fi[i]=i;
    }
    for(i=2; i<=MAX; i++){
        if(fi[i]==i){
            for(j=i; j<=MAX; j+=i){
                fi[j]/=i;
                fi[j]*=(i-1);
            }
        }
    }
}
inline int citeste(){
    int x=0;
    char ch=fgetc(fin);
    while(!isdigit(ch)){
        ch=fgetc(fin);
    }
    while(isdigit(ch)){
        x=x*10+ch-'0';
        ch=fgetc(fin);
    }
    return x;
}
int main(){
    int n, q;
    FILE *fout;
    fin=fopen("sum.in", "r");
    fout=fopen("sum.out", "w");
    ciur();
    fscanf(fin, "%d", &q);
    while(q>0){
        q--;
        n=citeste();
        fprintf(fout, "%lld\n", 2LL*n*fi[n]);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}