Pagini recente » Cod sursa (job #471127) | Cod sursa (job #47705) | Cod sursa (job #1575377) | Cod sursa (job #2190962) | Cod sursa (job #764258)
Cod sursa(job #764258)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX 1000001
#define MOD 9973
long long pr[80000];
int nr;
void ciur(){
bool p[MAX];
int i = 2;
memset(p,0,sizeof(p));
while(i <= 1000)
{
while(p[i])i++;
for(int j=i*i;j < MAX;j+=i)p[j] = 1;
i++;
}
for(int i=2;i<MAX;i++) if( !p[i] )pr[++nr] = i;
}
void desc(long long n){
long long sum = 1, nrm = 1, d, p;
int i = 1;
while(n != 1 && i <= nr && pr[i] * pr[i] <= n)
{
if(n%pr[i] == 0)
{
d = 0;
p = pr[i];
while(n%pr[i] == 0)
{
d++;
p *= pr[i];
n /= pr[i];
}
nrm *= (d+1);
sum = (sum * ((p-1)/(pr[i]-1))) % MOD;
}
i++;
}
if(n != 1)
{
nrm *= 2;
sum = (sum * ((n*n-1)/(n-1))) % MOD;
}
printf("%lld %lld\n",nrm,sum);
}
int main(){
int t;
long long n;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur();
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
desc(n);
}
return 0;
}