【一组数各自的】约数之和
【一组数各自的】约数之和
#include<bits/stdc++.h>
using namespace std;
// 求 (质因数^0 + …… + 质因数^质因数的指数)
int func(int a, int b){
int sum=0;
for(int i=0;i<=b;i++){ // i从0而不是从1开始!!!
sum += pow(a,i);
}
return sum;
}
int main(){
int n; //输入数的个数
cin>>n;
//处理每一个数
while(n--){
int a;
cin>>a;
int sum=1; //初始化为1而不是0(因为要累乘)
unordered_map<int,int> um;
//【质因数分解】
for(int i=2;i<=a;i++){
while(a%i==0){ //while而不是if————>为了分解彻底!!!
um[i]++;
a /= i; //更新a
}
}
// 【定理】
for(auto item:um){
sum *= func(item.first, item.second);
}
cout<<sum<<endl;
}
return 0;
}