Cod sursa(job #2194610)

Utilizator PredaBossPreda Andrei PredaBoss Data 13 aprilie 2018 21:17:01
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
bitset<1000001>ap;
vector<int>nrprim;
long long nr,lenght;
void solve()
{
    long long cop=nr,sum=0,howmany=0;
    for(int i=0;i<lenght;i++)
    {
        if(cop%nrprim[i]!=0)
            continue;
        while(cop%nrprim[i]==0) cop/=nrprim[i];
        howmany++;
        sum+=nrprim[i];
        if(cop==1)
            break;
    }
    if(cop>1)
    {
        howmany++;
        sum+=cop;
    }
    fout<<howmany<<" "<<sum<<"\n";
}
void ciur()
{
    for(int i=2;i<=1000000;i++)
    {
        if(ap[i])
            continue;
        int j=2*i;
        while(j<=1000000)
        {
            ap[j]=1;
            j+=i;
        }
        nrprim.push_back(i);
    }
    lenght=nrprim.size();
}
int main()
{
    fin>>t;
    ciur();
    for(int i=1;i<=t;i++)
    {
        cout<<1;
        fin>>nr;
        solve();
    }
    return 0;
}