Cod sursa(job #1260369)

Utilizator dezenStefan Brasoveanu dezen Data 11 noiembrie 2014 10:50:48
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<cstdio>
#include<cmath>
using namespace std;
long long n,j,i,v[1000000],c[1000000],a,b,e,d=1,f,p,s=1;
int main()
{
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    a=pow(10,6);
    for(i=2;i<=a;i++)c[i]=1;
    for(i=2;i<=a;i++)
    {
       if(c[i])
       for(j=i+i;j<=a;j+=i)c[j]=0;
    }
    scanf("%lld",&n);
    for(i=0;i<n;i++)
    {
        scanf("%lld",&v[i]);
        f=0;
        b=0;
        b=sqrt((double)v[i]);
        for(j=2;j<=b;j++)
        {
            if(c[j]==1)
                while(v[i]%j==0)
                {
                    e++;
                    v[i]/=j;
                    f=1;
                }
                d*=(e+1);
                p=pow(j,e+1);
                s*=(p-1)/(j-1);
                e=0;
        }
        if(f==0)
        {
            d=2;
            s=v[i]+1;
        }
        printf("%lld %lld\n",d,s);
        d=1;
        e=0;
        s=1;
    }
    return 0;
}