Pagini recente » Cod sursa (job #1843622) | Cod sursa (job #2319539) | Cod sursa (job #1115828) | Cod sursa (job #2596745) | Cod sursa (job #1160207)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <bitset>
using namespace std;
int t, a, nq, nr[1000050];
bitset<10000050> prim;
void ciur()
{
nr[nq++] = 2;
for(int d=3; d*d<1000000; d+=2){
if(prim[d]==0)
nr[nq++] = d;
for(int i=d; i<1000000; i+=2*d)
prim[i] = 1;
}
}
int putere(int x, int y)
{
int n=x;
int rez=1;
for(int i=0; 1<<i<=y; i++){
if((1<<i) & y){
rez*=n;
}
n = n*n;
}
return rez;
}
void diviz(int a)
{
long long sum=1;
int nrd=1, d, e;
for(int i=0; nr[i]*nr[i]<=a; i++){
d = nr[i];
e = 0;
while(a%d==0){
a/=d;
e++;
}
if(e){
nrd *= (e+1);
sum*= ((putere(d, e+1)-1)/(d-1));
sum%=9973;
}
}
if(a!=1){
nrd *= 2;
sum*= (a*a-1)/(a-1);
sum%=9973;
}
//cerr << suma << "\n";
printf("%lld %lld\n", nrd, sum);
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
ciur();
for(int i=0; i<t; i++){
scanf("%d ", &a);
diviz(a);
}
return 0;
}