Pagini recente » Cod sursa (job #1192254) | Cod sursa (job #1476502) | Cod sursa (job #1772739) | Cod sursa (job #2668265) | Cod sursa (job #2853486)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long int n, x, ciur[1000001], k, prime[80001];
int power(long long int a, long long int b)
{
long long ans=1;
for(int i=1; i<=b; i++)
{
ans=ans*a;
}
return ans;
}
void eratostene()
{
ciur[0]=1;
ciur[1]=1;
for(int i=2; i<=1000000; i++)
{
if(ciur[i]==0)
{
for(int j=i+i; j<=1000000; j+=i)
{
ciur[j]=1;
}
}
}
for(int i=2; i<=1000000; i++)
{
if(ciur[i]==0)
{
prime[++k]=i;
}
}
}
void calcul(long long x)
{
int nrdiv=1;
int suma=1;
int i=1;
while(i<=k && prime[i]*prime[i]<=x)
{
int p=0;
if(x%prime[i]==0)
{
p=0;
long long d=prime[i];
while(x%prime[i]==0)
{
x/=prime[i];
p++;
}
nrdiv*=(p+1);
suma*=(power(d, p+1)-1)/(d-1);
suma%=9973;
}
i++;
}
if(x>1)
{
nrdiv*=2;
suma*=(power(x, 2)-1)/(x-1);
suma%=9973;
}
fout<<nrdiv<<" "<<suma<<"\n";
}
int main()
{
fin>>n;
eratostene();
for(int i=1; i<=n; i++)
{
fin>>x;
calcul(x);
}
return 0;
}