#include "Gaoj.h"
#include "prime.h"
//高精类缺省构造函数把对象初始为0,所以total为0
/*
*res是存i^(2的乘方数)的结果
*ans是高精度数的数组存储i^m的结果
*total存储最终的结果
*/
int w,wei;
int main(){
mynumtotal,res,ans[10000];
int m,n,d,p;
cin>>m>>n>>w;
if(w%4==0)wei=w/4;
else wei=w/4+1;
for(inti=2;i<=n;++i){ //据说++i比i++快
if(prime[i]!=0){ //判断素数
res=i; //res初始为i^1,不知道什么方法能快一些
ans[i]=1; //ans[i]初始为1
p=m; //每次循环开始前复位
while(p>0){
while(p%2==0){
res*=res; //如果该2进制位为0则res=res^2,而不必把res乘到结果里
p/=2;
}
ans[i]*=res; //将res乘到ans[i]里
res*=res; //res=res^2
p/=2;
}
}else{
d=2;
while(i%d!=0) d=prime[d]; //找i的最小素因数
ans[i]=ans[d]*ans[i/d]; //根据 若a*b=c 则 c^m=a^m *b^m
}
total+=ans[i]; //累加结果
}
++total; //total加一
cout<<total<<endl;
system("PAUSE");
return 0;
}