Pagini recente » Cod sursa (job #1865076) | Cod sursa (job #1031694) | Cod sursa (job #785038) | Cod sursa (job #488913) | Cod sursa (job #1585783)
#include <iostream>
#include <fstream>
#include <cmath>
#include <stdlib.h>
#include <string>
#include <bitset>
#define MAX_N 1000005
using namespace std;
long long n;
int a[MAX_N];
bool v[1000005];
void ciur()
{int i,j;
for(i=1;i<MAX_N;i++)
v[i]=0;
v[2]=0;i=2;
while(i<=MAX_N)
{if(v[i]==0)
{j=1;
while((i*(j+1))<=MAX_N)
{j++;
v[j*i]=1;
}
}
i++;}
}
int pow(int x,int y)
{int n;
if(y==0) return 1;
n=1;
while(y>0)
{
if(y%2==0)
{x=x*x;
y=y/2;}
else
{n=n*x;
y--;}
}
return n;
}
int main()
{ int t,i,sum,nr,max,x,y,m;
fstream f("ssnd.in",ios::in);
fstream g("ssnd.out",ios::out);
f>>t;
ciur();
max=0;
for(x=1;x<=t;x++)
{f>>n;
if(v[n]==0)
g<<2%9973<<" "<<(n+1)%9973<<'\n';
else
{m=n;
for(i=2;i<=sqrt(n);i++)
a[i]=0;
y=sqrt(n);
for(i=2;((i<=y)&&(n!=1));i++)
{if((i>max)&&((n%i)==0)) max=i;
while((n%i==0)&&(n!=1))
{a[i]=a[i]+1;
n=n/i;
}
}
nr=1;sum=1;
for(i=2;i<=max;i++)
{
nr=nr*(a[i]+1);
if(m%i==0)
sum=sum*((pow(i,a[i]+1)-1)/(i-1));
}
g<<nr%9973<<" "<<sum%9973<<'\n';
}
}
f.close();
g.close();
}