Cod sursa(job #2127556)

Utilizator deiubejanAndrei Bejan deiubejan Data 10 februarie 2018 19:13:00
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

unsigned long long n,i,x,j,expo,iexp,k,nrd,sumad,prime[1001];
bool v[1000000];
void fprim(){
    for(i=1; i<=1000000; i++)
        v[i]=1;
    for(i=2; i<=1000; i++)
        if(v[i]==1){
            for(j=i; j<=1000000/i; j++)
                v[i*j]=0;
            prime[++k]=i;
        }
}
int main()
{
    fprim();
    cin>>n;
    for(j=1; j<=n; j++){
        sumad=1;
        nrd=1;
        i=2;
        k=1;
        cin>>x;
        while(x>1){
            iexp=1;
            expo=0;
            if(i>sqrt(x))
                i=x;
            while(x%i==0){
                x=x/i;
                expo++;
                iexp=iexp*i;
                if(x%i!=0){
                    iexp=iexp*i;
                    expo++;
                }
            }
            if(expo!=0)
                nrd=nrd*expo;
            if(iexp!=1)
                sumad=sumad*(iexp-1)/(i-1);
            i=prime[++k];
        }
        cout<<nrd<<" "<<sumad%9973<<"\n";
    }

    return 0;
}