Pagini recente » Cod sursa (job #1454273) | Cod sursa (job #1549401) | Cod sursa (job #2802051) | Cod sursa (job #1633357) | Cod sursa (job #1831625)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#define MAX 1000005
#define MOD 9973
int prim[MAX/3] , k;
bool erathostene[MAX];
void era()
{
for(int i=2;i<MAX-1;i++)
{
if(erathostene[i]) continue;
for(int j=2*i;j<MAX;j+=i)
{
erathostene[j]=true;
}
prim[k++]=i;
}
}
void afisare()
{ int d=2;
long long int n;
in>>n;
int s=n+1 , x=sqrt(n);
for(int i=0;i<k;i++)
{
//cout << prim[i] << '\n';
if(prim[i]>=n/2) break;
if(n%prim[i]==0)
{
s=(s+prim[i]) % MOD;
d++;
// cout << prim[i] << '\n';
int j=2;
while(j*prim[i]<=n/2) {
if(n%(j*prim[i])==0) {
for(int l=0;l<i;l++)
if(j*prim[i]%prim[l]==0) goto next;
// cout << j * prim[i] << '\n';
s=(s+j*prim[i])%MOD;
d++;
}
next:
j++;
}
}
}
out<<d<<' '<<s<<endl;
}
int main()
{ int t;
in>>t;
era();
for(int i=1;i<=t;i++)
afisare();
in.close();
out.close();
return 0;
}