Cod sursa(job #792122)

Utilizator PavelPavel Ana-Oriana Pavel Data 26 septembrie 2012 15:47:49
Problema Suma si numarul divizorilor Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>

char pr[1000001];
int p[100000];

void ciur()
{
    int i,j,n=0;
    for(i=2;i*i<=1000000;i++)
        if(pr[i]==0)
        {
            for(j=i*i;j<=1000000;j+=i)
                pr[j]=1;
        }
    n=0;
    for(i=2;i<=1000000;i++)
        if(pr[i]==0)
            p[++n]=i;

}

int main()
{
    FILE *f,*g;
    f=fopen("ssnd.in","r");
    g=fopen("ssnd.out","w");
    int i,t,z,e=1,pu;
    long long n,s=1,nr;
    ciur();
    fscanf(f,"%d",&t);
    for(z=1;z<=t;z++)
    {
        fscanf(f,"%lld",&n);
        nr=1;
        s=1;
        for(i=1;(long long)p[i]*p[i]<=n;i++)
            if(n%p[i]==0)
            {
                e=0;
                pu=1;
                while(n%p[i]==0)
                {
                    e++;
                    pu*=p[i];
                    n/=p[i];
                }
                nr=nr*(e+1);
                s=s*(pu*p[i]-1)/(p[i]-1)%9973;
            }
        if(n!=1)
        {
            nr=nr*2;
            s=s*(n+1)%9973;
        }
        fprintf(g,"%lld %lld\n",nr,s);
    }
    return 0;
}