Pagini recente » Cod sursa (job #428231) | Borderou de evaluare (job #1547923) | Cod sursa (job #1296055) | Cod sursa (job #1298089) | Cod sursa (job #3308982)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int NRMAX=10000;
bitset<NRMAX+5>is_prime;
void ciur(){
is_prime.set();
is_prime[0]=is_prime[1]=0;
for(int i=4;i<=NRMAX;i=i+2){
is_prime[i]=0;
}
for(int i=3;i*i<=NRMAX;i=i+2){
for(int j=i*i;j<=NRMAX;j=j+i){
is_prime[j]=0;
}
}
}
int nrdiv(int n){
int ans=1;
for(int i=2;i*i<=n;i++){
if(is_prime[i]==1 && n%i==0){
int ct=0;
while(n%i==0){
n=n/i;
ct++;
}
ans=ans*(1+ct);
}
}
if(n>1){
ans=ans*2;
}
return ans;
}
int sdiv(int n){
int s=0;
for(int i=1;i<=n/2;i++){
if(n%i==0)
s=s+i;
}
return s+n;
}
int main(){
ciur ();
int n,a;
fin>>n;
for(int i=1;i<=n;i++){
fin>>a;
fout<<nrdiv(a)<<" "<<sdiv(a)<<endl;
}
}