Pagini recente » Cod sursa (job #3313755) | Cod sursa (job #1174355) | Cod sursa (job #3306933) | Cod sursa (job #117544) | Cod sursa (job #3326909)
#include <fstream>
#define CMAX 1000002
#define MOD 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long int n, t;
bool ciur[CMAX];
void eratostene();
void DIV(long long int n);
int main()
{
eratostene();
int i;
fin>>t;
for(i = 1; i <= t; i++)
{
fin>>n;
DIV(n);
}
return 0;
}
void DIV(long long int n)
{
int contor = 2, d;
long long int sumdiv = n + 1;
//determinare nr divizori
if(ciur[n] == 0) //n este prim
fout<<contor<<' '<<sumdiv<<'\n';
else
{
for(d = 2; d * d < n; d++)
if(n % d == 0)
{
contor += 2;
sumdiv = (sumdiv + (d % MOD) + ((n / d) % MOD)) % MOD;
}
if(d * d == n) {sumdiv = (sumdiv + (d % MOD)) % MOD; contor++;} //patrat perfect
fout<<contor<<' '<<sumdiv<<'\n';
}
}
void eratostene()
{
int i, j;
ciur[0] = ciur[1] = 1;
for(i = 2; i * i <= CMAX; i++)
for(j = i + i; j <= CMAX; j += i)
ciur[j] = 1;
}