Cod sursa(job #1851472)

Utilizator MirunaStefaniaLupascu Miruna-Stefania MirunaStefania Data 19 ianuarie 2017 19:38:00
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include<fstream>
#define nmax 1000001
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool a[nmax];
int main()
{   int n,i,nrdiv,suma,j,x,d,ct,nr,cx;
    fin>>n;
    a[2]=true;
    for(i=3;i<=nmax;i++)a[i]=true;
    for(i=3;i*i<=nmax;i++)
       if(a[i]==true)
         for(j=3*i;j<=nmax;j=j+2*i)a[j]=true;
    for(i=1;i<=n;i++)
    {fin>>x;cx=x;
     //if(a[x]==true)fout<<2<<" "<<(x+1)%9973<<"\n";
     d=2;nrdiv=1;suma=1;
     while(x!=1)
     {ct=0;nr=1;
     while(x%d==0){x=x/d;ct++;}
     if(ct>0){
              nrdiv=nrdiv*(ct+1);
              for(j=1;j<=ct+1;j++)nr=nr*d;
              cout<<nr<<" ";
              suma=suma*(nr-1)/(d-1);
             }
      if(d*d<x)d++;
      else d=x;
    }
    //suma=suma+cx;
    //cout<<suma<<" ";
    fout<<nrdiv<<" "<<suma%9973<<"\n";

    }

    return 0;
}