Cod sursa(job #1583867)

Utilizator doruliqueDoru MODRISAN dorulique Data 29 ianuarie 2016 14:28:58
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;

bool ciur[1000050];
int prime[79000];

void baga_ciur()
{
    int x=2,d,tz=0;
    ciur[0]=ciur[1]=1;
    while(x<1000050)
    {
        prime[++tz]=x;
        d=2*x;
        while(d<1000050)
        {
            ciur[d]=1;
            d+=x;
        }
        x++;
        while(ciur[x])x++;
    }
}

int main()
{
    baga_ciur();
    ifstream f("ssnd.in");
    int i,n,j,p,pfc,prp,sp;
    long long x;
    f>>n;
    ofstream fout("ssnd.out");
    for(i=1;i<=n;i++)
    {
        f>>x;
        j=1;prp=1;sp=1;
        while(prime[j]*prime[j]<=x)
        {
            p=0;
            pfc=prime[j];
            while(x%prime[j]==0)
            {
                x/=prime[j];
                p++;
                pfc=(pfc*prime[j])%9973;
            }
            if(p)
            {
                prp=prp*(p+1)%9973;
                sp=sp*((pfc-1)/(prime[j]-1))%9973;
            }
            j++;
        }
        if(x!=1)
            {
                prp=prp*2%9973;
                sp=sp*(x+1)%9973;
            }
        fout<<prp<<" "<<sp<<"\n";
    }
    return 0;
}