Pagini recente » Cod sursa (job #1587281) | Cod sursa (job #1817739) | Cod sursa (job #2940268) | Cod sursa (job #2858644) | Cod sursa (job #3246436)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bitset<1000005>a;
int prime[100005], k;
void Ciur(int n)
{
int i,j;
a[1] = a[0] = 1;
for(i = 4; i <= n; i += 2)
a[i] = 1;
for(i = 3; i * i <= n; i += 2)
if(a[i] == 0)
for(j = i * i; j <= n; j += 2 * i)
a[j] = 1;
prime[++k] = 2;
for(i = 3; i <= n; i += 2)
if(a[i] == 0) prime[++k] = i;
}
void F(long long x)
{
int i, e;
long long s = 1, cnt = 1;
for(i = 1; prime[i] * prime[i] <= x; i++)
if(x%prime[i]==0)
{
e = 0;
while(x%prime[i]==0)
{
x = x / prime[i];
e++;
}
cnt *= (e + 1);
s = s * (pow(prime[i], e+1) - 1) / (prime[i] - 1);
}
if(x > 1)
{
cnt *= 2;
s = s * (x * x - 1) / (x - 1);
}
fout << cnt << " " << s << "\n";
}
int main()
{
int t, i;
long long x;
Ciur(1000000);
fin >> t;
for(i = 1; i <= t; i++)
{
fin >> x;
F(x);
}
return 0;
}