Pagini recente » Cod sursa (job #2814974) | Cod sursa (job #1176004) | Cod sursa (job #2681291) | Cod sursa (job #348720) | Cod sursa (job #1986944)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
bool c[1000000];
int vp[78500];
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int FactPrim(int x)
{
int nr=1,d=3,p=0,r;
while(x%2==0)
{
x/=2;
p++;
}
nr*=p+1;
r=sqrt(x);
while(d<=r)
{
p=0;
while(x%d==0)
{
p++;
x/=d;
}
if(p)
{
nr*=p+1;
r=sqrt(x);
}
d+=2;
}
if(x!=1) nr*=2;
return nr;
}
void Ciur(int n)
{
int i,j;
for(i=2;i<=n;i++)
c[i]=1;
for(i=2;i<=n;i++)
if(c[i])
{
for(j=i+i;j<=n;j+=i)
c[j]=0;
}
}
int SumDiv(int n)
{
int s=1+n,r=sqrt(n),d;
if(n%2==0) s+=2+n/2;
for(d=3;d<=r;d+=2)
if(n%d==0&&c[d])
s+=d+n/d;
return s%9973;
}
int main()
{
int t,i,n;
f>>t;
for(i=1;i<=t;i++)
{
f>>n;
Ciur(n);
g<<FactPrim(n)<<" "<<SumDiv(n)<<endl;
}
f.close();
g.close();
return 0;
}