Pagini recente » Cod sursa (job #2746804) | Cod sursa (job #2026303) | Cod sursa (job #1561251) | Cod sursa (job #3201838) | Cod sursa (job #2143288)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
const int NMAX = 1000002;
bool v[NMAX];
int prime[NMAX];
int len, t, nrdiv, pos;
long long n, sumdiv, put;
void ciur(){
for(int i = 4; i <= NMAX; i += 2)
v[i] = 1;
for(int i = 3; i * i <= NMAX; i += 2){
if(v[i] == 0){
for(int j = i * i; j <= NMAX; j += i * 2)
v[j] = 1;
}
}
prime[++len] = 2; prime[++len] = 3; int d = 5;
while (d <= NMAX) {
if (v[d] == 0)
prime[++len] = d;
if (v[d + 2] == 0)
prime[++len] = d + 2;
d += 6;
}
}
int main()
{
fin >> t;
ciur();
for(int i = 1; i <= t; i++){
fin >> n;
nrdiv = 1; pos = 1; int exp;
sumdiv = 1;
while(prime[pos] * prime[pos] <= n && pos <= len){
put = 1; exp = 0;
while(n % prime[pos] == 0){
n /= prime[pos];
put *= prime[pos];
exp++;
}
put *= prime[pos];
nrdiv *= (exp + 1);
sumdiv *= (long long)((put - 1) / (prime[pos] - 1));
pos++;
}
if(n > 1){
nrdiv *= 2;
sumdiv *= (long long)((n * n - 1) / (n - 1));
}
sumdiv %= 9973;
fout << nrdiv << " " << sumdiv << "\n";
}
return 0;
}