Pagini recente » Cod sursa (job #2400985) | Cod sursa (job #2043489) | Cod sursa (job #995265) | Cod sursa (job #1064873) | Cod sursa (job #1943550)
#include <iostream>
#include <fstream>
#include <bitset>
#include <math.h>
using namespace std;
bitset <1000010> ciur;
unsigned int prime[1000000];
int k = 0;
void ciurf ()
{
int i, j;
ciur [1] = 1;
for(i=2;i<=1000010;++i)
if(ciur[i]==0)
{
prime[k]=i;
++k;
for(j=i+i;j<=1000010;j+=i)
ciur[j]=1;
}
}
int main()
{
ifstream in ("ssnd.in");
ofstream out ("ssnd.out");
int t;
long long int n, nr, sum=0, partsum, partprod;
int i, putere;
ciurf();
in>>t;
for(;t>0;--t)
{
in>>n;
nr = 1;
sum=1;
for(i=0;prime[i]<=n && i<k;++i)
{
if(n%prime[i])
continue;
putere = 0;
partsum = 1LL; partprod = 1LL;
while(n%prime[i]==0)
{
++putere;
partprod*=prime[i];
partsum +=partprod;
n/=prime[i];
}
sum *= partsum;
sum %= 9973;
nr *=(1+putere);
}
//testam daca e un nr prim f mare
if(n>1)
{
nr*=2;
sum=(sum * n+1) % 9973;
}
out<<nr<<" "<<sum<<"\n";
}
}