Pagini recente » Cod sursa (job #1910502) | Cod sursa (job #284622) | Cod sursa (job #1630925) | Cod sursa (job #2234360) | Cod sursa (job #1265078)
#include <fstream>
using namespace std;
long long v[10001],d,n,i,val,prim,nrdiv,sdiv,p,s,j;
char ciur[1000001];
int main(){
ifstream in("ssnd.in");
ofstream out("ssnd.out");
in>>n;
val=-1;
for(i=1;i<=n;i++){
in>>v[i];
if(v[i]>val) val=v[i];
}
prim=2;
while(prim*prim<=val){
for(d=2;d*prim<=val;d++)
ciur[prim*d]=1;
prim++;
while(ciur[prim]==1) prim++;
}
for(i=1;i<=n;i++){
nrdiv=1;sdiv=1;
for(d=2;d*d<=v[i];d++)
if(ciur[d]==0&&v[i]%d==0){
p=0;
while(v[i]%d==0){
p++;
v[i]/=d;
}
if(p>0){
s=1;
for(j=1;j<=p+1;j++)
s*=d;
s--;
s=s/(d-1);
nrdiv*=p+1;
sdiv*=s;
}
}
if(v[i]!=1){
s=(v[i]*v[i]-1)/(v[i]-1);
nrdiv*=2;
sdiv*=s;
}
out<<nrdiv<<" "<<sdiv<<'\n';
}
in.close();
out.close();
return 0;
}