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