因数之和对一个大数取模

问题遇到的现象和发生背景

因数之和
时间限制: 1.5秒 占用内存:250 M
输入两个整数A和B,求A的B次方的因子和。结果对1000000007取模。
格式
输入格式:一行两个整数A,B。
输出格式:输出一个整数表示对1000000007取模的结果。
样例1
输入:2 3
输出:15
备注
其中:1≤A,B≤6* 10^7

用代码块功能插入代码,请勿粘贴截图

#include

using namespace std;

int main( )
{
int n,A,B,i,sum=0;
scanf("%d%d",&A,&B);
n=pow(A,B);
for(i=1;i<=n;i++)
{
if(n%i==0)
sum=sum+i;
}
sum=sum%1000000007;
printf("%d\n",sum);
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

从1循环到A的B次方,找到A的B次方所有因子并求和,再对1000000007取模得到结果。

我想要达到的结果

对1≤A,B≤6* 10^7均能得到正确结果。

img

img

pow计算会溢出,注意1≤A,B≤6* 10^7