计算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;
}