Cod sursa(job #2040865)

Utilizator victorv88Veltan Victor victorv88 Data 16 octombrie 2017 17:08:14
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("ssnd.in");
ofstream g("ssnd.out");

int n, t, nr=0, s[100000], p,aux,d,sum=0, partial;
char fr[1000005];


void ciur()
{
    nr=0;
    for (int i=2; i<=1000000; i++)
    {
        if (!fr[i])
        {
            s[nr++]=i;
            for (int j=2*i; j<=1000000; j+=i)
                fr[j]=1;
        }
    }
    fr[1]=1;
}

void cautarenr()
{
    int aux, nr1=1, numar, uz=1;
    p=1;
    for (int i=0; i<nr && i*i<=t; i++)
    {
        nr1=1;
        if (t%s[i]==0)
        {
            while (t%s[i]==0)
            {
                t/=s[i];
                nr1++;
            }
            p*=nr1;
            x=i;
            while (nr1)
            {
                if (nr1%2==1)
                {
                    uz*=x;
                    nr--;
                }
                else
                {
                    x*=2;
                    p/=2;
                }
            }
        }
    }
    if (fr[t]==0)
        p*=2;
    cout << p << endl;
}

int main()
{
    f >> n;
    ciur();
    for (int i=0; i<n; i++)
    {
        f>>t;
        cautarenr();
    }
    return 0;
}