Cod sursa(job #1495169)

Utilizator armandpredaPreda Armand armandpreda Data 2 octombrie 2015 18:18:40
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("ssnd.in");
ofstream cout("ssnd.out");

const int LIM=1000000, MOD=9973;
int t, np, p[LIM+14];
void ciur()
{
    p[++np]=2;
    int i;
    for(i=3; i*i<LIM+14; i+=2)
        if(!p[i])
        {
            p[++np]=i;
            for(int j=i*i; j<LIM+14; j+=i+i)
                p[j]=1;
        }
    for(;i<LIM+14; i+=2)
        if(!p[i])
            p[++np]=i;
}
int main()
{
    ciur();
    cin>>t;
    while(t--)
    {
        long long n, nr_div=1, sum_div=1;
        int id=1;
        cin>>n;
        while(n>1)
        {
            long long f=p[id];
            int put=0;
            long long x=1, cur=1;
            if(f*f>n) f=n;
            while(n%f==0)
            {
                put++;
                x*=f, cur+=x;
                n/=f;
            }
            nr_div*=put+1;
            sum_div=(sum_div*cur)%MOD;
            id++;
        }
        cout<<nr_div<<' '<<sum_div<<'\n';
    }
    return 0;
}