Pagini recente » Cod sursa (job #1475892) | Cod sursa (job #574295) | Cod sursa (job #1092674) | Cod sursa (job #1111547) | Cod sursa (job #2973048)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int N = 1e6 + 5;
bool is_prime[N];
int primes[N], cnt_primes;
void sieve() {
memset(is_prime, true, sizeof is_prime);
is_prime[0] = is_prime[1] = false;
for (int i = 2; i <= N - 5; i++) {
if (is_prime[i]) {
primes[cnt_primes++] = i;
for (int j = 2 * i; j <= N - 5; j += i) {
is_prime[j] = false;
}
}
}
}
int t, cnt;
ll n, sum;
int main() {
sieve();
fin >> t;
while (t--) {
fin >> n;
sum = 1;cnt = 1;
int sqrt_n = sqrt(n);
if(is_prime[n]){
sum = 1 + n;
cnt = 2;
}
else{
for (int i = 0; i < cnt_primes && primes[i] <= sqrt_n; i++) {
if (n % primes[i] == 0) {
int p = primes[i], k = 0;
while (n % p == 0) {
n /= p;
k++;
}
sum *= ((ll)pow(p, k + 1) - 1) / (p - 1);
cnt *= (k + 1);
}
}}
fout << cnt << " " << sum % 9973 << endl;
}
return 0;
}
/*#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int n,teste;
bool prime[100001];
void eratostene(){
for(int i=2;i<=n;i++){
if(prime[i]==false){
for(int j=2*i;j<=n;j++)
prime[i]=true;
}
}
}
int put(int a,int b){
int p=1;
while(b--){
p *=a;
}
return p;
}
int main(){
fin>>teste;
eratostene();
while(teste--){
fin>>n;
int d[1001],p[1001];
memset(d,0,sizeof(d));
memset(p,0,sizeof(p));
for(int i=2;i*i<=n;i++){
if(prime[i]==false){
p[i]=i;
while(n%i==0){
d[i]++;
n /= i;
}
}
}
long long nr_div=1;
for(int i=2;i*i<=n;i++){
if(d[i]!=0){
nr_div *= (d[i]+1);
}
}
long long suma_div=0;
for(int i=2;i*i<=n;i++){
if(p[i]!=0){
suma_div += ((put(p[i],d[i]+1)-1)/(p[i]-1));
}
}
fout<<nr_div<<' '<<suma_div<<'\n';
}
return 0;
}*/