Pagini recente » Cod sursa (job #1506252) | Cod sursa (job #779153) | Cod sursa (job #2839642) | Cod sursa (job #1707203) | Cod sursa (job #1393429)
#include <fstream>
#include <cmath>
#include <vector>
#include <bitset>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
vector <int> prime;
bitset <1000001> v;
int nrquiz,nr,i,exponent,nrd,suma,aux;
void ciur()
{
int i,j;
v[0]=v[1]=1;
for (i=4; i<=1000000; i+=2)
v[i]=1;
for (i=3; i<=1000000; i+=2)
if (v[i]==0)
for (j=2*i; j<=1000000; j+=i)
v[j]=1;
prime.push_back(2);
for (i=3; i<=1000000; i+=2)
if (v[i]==0) prime.push_back(i);
}
int putere(int x, int y)
{
int i,rez=1;
for (i=1; i<=y; ++i) rez*=x;
return rez;
}
int main()
{
ciur();
f>>nrquiz;
while (nrquiz)
{
nrquiz--;
f>>nr;
i=0;
nrd=1;
suma=1;
bool prim=0;
aux=nr;
while (prime[i]<=sqrt(nr))
{
exponent=0;
if (aux%prime[i]==0)
{
prim=1;
while (aux%prime[i]==0)
{
exponent++;
aux/=prime[i];
}
}
suma*=(putere(prime[i],exponent+1)-1)/(prime[i]-1);
nrd*=(exponent+1);
i++;
}
if (!prim) g<<2<<" "<<nr+1<<'\n';
else
g<<nrd<<" "<<suma<<'\n';
}
return 0;
}