Cod sursa(job #2354559)

Utilizator PopaAlbertPopa Albert-Ioan PopaAlbert Data 25 februarie 2019 13:04:21
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#define N 45000
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool c[45000];
long long n,i,a[10001],np,d,b,prim[45000];
void ciur()
{
    int i,j;
    for(i=2;i*i<N;i++)
        if(!c[i])
        for(j=i*i;j<N;j+=i)
        c[j]=true;
    for(i=2;i<N;i++)
        if(!c[i])
    {
        np++;
        prim[np]=i;
    }
}
long long nrdiv(long long n)
{
    int i,k,nr=1;
    for(i=1;prim[i]*prim[i]<=n;i++)
    {
        k=0;
        while(n%prim[i]==0)
        {
            k++;
            n=n/prim[i];
        }
        nr=nr*(k+1);
    }
    if(n!=1)
        nr=nr*2;
    return nr;
}
long long sumdiv(long long x)
{
    int i,s=0;
    for(i=1;i<=x;i++)
        if(x%i==0)
        s=s+i;
    return s;
}
int main()
{
    ciur();
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    for(i=1;i<=n;i++)
        g<<nrdiv(a[i])<<" "<<sumdiv(a[i])<<endl;
}