计算n的约数(因数)之和:
设
约数之和
代码
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> m;
const int mod=1e9+7;
long long t,a,sum,ans;
int main(){
cin>>t;
while(t--){
cin>>a;
for(int i=2;i<=a/i;i++){//求每个数的约数和他们的幂
while(a%i==0){
m[i]++;
a/=i;
}
}
if(a>1) m[a]++;
}
ans=1;
for(auto i:m){//约数之和
sum=1;
while(i.second--){
sum=(sum*i.first+1)%mod;
}
ans=ans*sum%mod;
}
cout<<ans<<endl;
return 0;
} 
京公网安备 11010502036488号