Cod sursa(job #1580337)

Utilizator gabime11Gabriel gabime11 Data 25 ianuarie 2016 19:48:25
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<iostream>
#include<fstream>
using namespace std;
char a[1000009];
int main()
{
    long long i,j,nr=0,v[100000],t,n,x,p1,p2,y,c;
    ifstream fin("ssnd.in");
    ofstream fout("ssnd.out");
    for(i=2;i<=1000000;i++)
    {
        if(a[i]==0)
        {
            nr++;
            v[nr]=i;
            for(j=i*i;j<=1000000;j=j+i)
            {
                a[j]=1;
            }
        }
    }
    fin>>t;
    for(i=1;i<=t;i++)
    {
        fin>>n;
        x=n;
        p1=1;
        p2=1;
        j=1;
        while(v[j]*v[j]<=x)
        {
            c=0;
            y=1;
            while(x%v[j]==0)
            {
                c++;
                x/=v[j];
                y*=v[j];
            }
            if(c>0)
            {
                p1*=(c+1);
                p2=p2*(y*v[j]-1)/(v[j]-1);
            }
            j++;
        }
        if(x>1)
        {
            p1*=2;
            p2*=(x+1);
        }
        fout<<p1<<" "<<p2%9973<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}