Cod sursa(job #1058627)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 15 decembrie 2013 18:33:05
Problema Sum Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
using namespace std;

ifstream f("sum.in");
ofstream g("sum.out");

const int N=200001;
int e[N],v[67],c[N/2+1];
int prim[N/2+1]={};
bool r[N/2+1];

int main(){
    int n,nr=0,i,j,k,x,nrp=0;
    long long s;
    for(i=2 ; i*i<=N/2 ; i++)
        if(!r[i])
            for(j=i*i ; j<=N/2 ; j+=i)
                r[j] = true;
    for(i=2;i<=N/2;i++)
        if(r[i]==false){
            nrp++;
            prim[nrp]=i;
        }
    f>>x;
    for(k=1;k<=x;k++)
        f>>c[k];
    for(k=1;k<=x;k++){
        s=0;
        nr=0;
        n=c[k];
        for(i=1;i<=2*n;i++)
            e[i]=i;
        for(i=1; prim[i]<=n ;i++)
            if(n%prim[i]==0){
                nr++;
                v[nr]=prim[i];
            }
        //for(i=1;i<=nr;i++)
        //    g<<v[i]<<" ";
        //g<<"\n";
        for(i=1;i<=nr;i++)
            if(e[v[i]]==v[i])
                for(j=v[i];j<=2*n;j+=v[i])
                    e[j]=e[j]/v[i]*(v[i]-1);
        for(i=1;i<=2*n;i++)
            if(e[i]==i)
                s=s+i;
        g<<s<<"\n";
    }
    return 0;
}