Cod sursa(job #1343564)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 15 februarie 2015 16:51:34
Problema Suma si numarul divizorilor Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>
#include <stdlib.h>
char ciur[1000001];
int pr[100001];
int main()
{
    int i,j,p,n,div;
    long long x,t,s,pdiv,e;
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    for(i=2; i*i<=1000000; i++)
        if(ciur[i]==0)
            for(j=i*i; j<=1000000; j+=i)
                ciur[j]=1;
    p=0;
    for(i=2; i<=1000000; i++)
        if(ciur[i]==0)
            p++,pr[p]=i;
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
        scanf("%lld",&x);
        div=1;
        t=1;
        s=1;
        while(pr[div]*(long long)pr[div]<=x)
        {
            e=0;
            pdiv=1;
            while(x%pr[div]==0)
            {
                x/=pr[div];
                pdiv*=pr[div];
                e++;
            }
            pdiv*=pr[div];
            t*=(e+1);
            s=s*(pdiv-1)/(pr[div]-1);
            div++;
        }
        if(x!=1)
            t*=2,s=(x+1)*s;
        printf("%lld %lld\n",t%9973,s%9973);
    }

    return 0;
}