Pagini recente » Borderou de evaluare (job #2664406) | Borderou de evaluare (job #2481589) | jmenoasa | Borderou de evaluare (job #2297655) | Cod sursa (job #3227878)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
int IsPr[1000001];
int v[1001];
vector <long long> FPrimi;
vector <long long> FPrimifr;
void ClE(){
IsPr[0] = 0;
IsPr[1] = 0;
for (int i=2;i<=1000000;++i){
IsPr[i] = 1;
}
for (int i=2;i<=1000000;++i){
for (int j=2*i;j<=1000000;j+=i){
IsPr[j] = 0;
}
}
}
int main()
{
int t;
fin >> t;
for (int i=1;i<=t;++i){
fin >> v[i];
for (long long j=0;j<=1000001;++j){
FPrimifr.push_back(0);
FPrimi.push_back(0);
}
int n = v[i];
while (n>1){
int y = 2;
if (n%y==0){
FPrimi[y] = 1;
}
while (n%y==0){
FPrimifr[y] += 1;
n /= y;
}
y += 1;
while (n%y>0 and IsPr[y]==0 and n>1){
y += 1;
}
}
int nrdiv = 1;
for (long long j=0;j<=1000001;++j){
nrdiv *= FPrimifr[j]+1;
}
int sumdiv = 0;
int sd = 1;
int r = 1;
for (int j=2;j<=1000000;++j){
if (IsPr[j]==1){
for (int k=1;k<=FPrimifr[j];++k){
r *= j;
sd += r;
}
}
}
sumdiv *= sd;
fout << nrdiv << ' ' << sumdiv << '\n';
}
return 0;
}