#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <ctime>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
using namespace std;
typedef long long int LL;
const int MAX = 1e5+10, INF = (1<<30)-1;
int N, M, X;
int Prime[MAX], cnt = 0;
int p[MAX] = {0};
int num = 0, sum = 1;
int init()
{
for(int j=2; j<MAX; j++)
{
if(!p[j])
{
Prime[cnt++] = j;
for(int k=j+j; k<MAX; k+=j) p[k] = 1;
}
}
}
int main()
{
init();
while(scanf("%d", &N) != EOF)
{
sum = 1;
int sqr = (int)sqrt(1.0*N);
for(int i=0; Prime[i]<=sqr; i++)
{
int num = 0;
while(N%Prime[i] == 0)
{
num++;
N /= Prime[i];
}
sum *= ((int)round(pow(1.0*Prime[i], num+1.0))-1)/(int)(Prime[i]-1);
}
if(N != 1)
{
sum *= N+1;
}
printf("%d\n", sum);
}
return 0;
}
【codeup墓地】2675: 初级第九课——约数和
最新推荐文章于 2023-08-22 22:28:29 发布