Cod sursa(job #1459589)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 10 iulie 2015 12:05:24
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");

int sumdiv=1,nrdiv=1,n,prim[500000],a[1000010],nr;

void Solve (int p)
{
    int apar=0;
    int nrt=0;
    int aux=1;
    int i,j;
    for (i=1;i<=nr;i++)
    {
        if (prim[i]>p) break;
        if (p%prim[i]==0)
        {
    apar=0;
    aux=1;
           // div[nrt]=prim[i];
            while (p%prim[i]==0)
            {
                apar++;
                p/=prim[i];
            }
            //cout<<apar<<" "<<prim[i]<<"\n";

            for (j=1;j<=apar+1;j++)
            {
                aux*=prim[i];
            }
            aux--;
            aux=aux/(prim[i]-1);
        }
        sumdiv*=aux;
        sumdiv%=9973;
        nrdiv*=(apar+1);

    }




}




void Ciur ()
{
int i,j;
for (i=2;i<=1000000;i++)
for (j=i+i;j<=1000000;j+=i) a[j]=1;

nr=0;
for (i=2;i<=1000000;i++)
{
    if (a[i]==0) {nr++;prim[nr]=i;}
}



}




int main()
{

    Ciur ();
   int i;
f>>n;
int x;
for (i=1;i<=n;i++)
{
    f>>x;
    sumdiv=1;
    nrdiv=1;
    Solve (x);
    g<<nrdiv<<" "<<sumdiv<<"\n";
}




    return 0;
}