Pagini recente » Cod sursa (job #2320936) | Cod sursa (job #2058639) | Cod sursa (job #294331) | Cod sursa (job #1993503) | Cod sursa (job #1943516)
#include <iostream>
#include <fstream>
#include <bitset>
#include <math.h>
using namespace std;
bitset <10000010> ciur;
unsigned int prime[1000000];
int k = 0;
void ciurf (int n)
{
ciur.reset();
int i, j;
ciur [1] = 1;
for(i=2;i<=2e6;i++)
if(ciur[i]==0)
{
prime[k]=i;
++k;
for(j=i+i;j<=2e6;j+=i)
ciur[j]=1;
}
}
int main()
{
ifstream in ("ssnd.in");
ofstream out ("ssnd.out");
int t;
long long int n, nr, n2, sum=0, partsum, partprod;
int i, putere;
ciurf(2e6);
in>>t;
while(t--)
{
in>>n;
n2=n;
nr = 1;
sum=1;
for(i=0;prime[i]<=n, i<k;++i)
if(n%prime[i]==0)
{
putere = 0;
partsum = 1; partprod = 1;
while(n%prime[i]==0)
{
++putere;
partprod*=prime[i];
partprod%=9973;
partsum +=partprod;
if(partsum > 9973)
partsum -= 9973;
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";
}
}