Cod sursa(job #993705)

Utilizator ionutpop118Pop Ioan Cristian ionutpop118 Data 4 septembrie 2013 12:18:43
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <cmath>
using namespace std;
bool v[200002];
inline int fact_prim(int n)
{
    int i,lim,s,k,ok,cop;
    s=n*((2*n)+1);
    v[n]=v[2*n]=1;
    s=s-3*n;
    cop=n;
    lim=(int)sqrt((double)n);
    for (i=2;i<=lim+1&&n>1;i++)
    {
        ok=0;
        while (n>1&&n%i==0)
        {
            ok=1;
            n=n/i;
        }
        if (ok==1)
           for (k=i;k<=cop*2;k=k+i)
           {
               if (v[k]==0)
                  s=s-k;
               v[k]=1;
           }
    }
    for (i=1;i<=2*n;i++)
        v[i]=0;
    return s;
}
int main()
{
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    int n,x,i,s;
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        scanf("%d",&x);
        s=fact_prim(x);
        printf("%d\n",s);
    }
    return 0;
}