#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<iomanip>
#define INT __int64
const int Max = 5000005 ;
INT dp[ Max + 1 ] ;
using namespace std;
void init()
{
for( int i = 0 ; i <= Max ; ++i )
dp[ i ] = 1 ;
for( int i = 2 ; i * i <= Max ; ++i )
{
for( int j = i + 1 ; i * j <= Max ; ++j )
dp[ i * j ] += i + j ;
dp[ i * i ] += i ;
}
}
int main()
{
init() ;
int n ;
//最好用C的输入输出,防止TLE
while( ~scanf( "%d" , &n ) )
{
printf( "%I64d\n" , dp[ n ] ) ;
}
return 0 ;
}
快速求一个大区间的所有因子之和
最新推荐文章于 2023-08-12 20:45:29 发布