题目描述

输入
只有一行一个整数 N(0 < N < 1000000)。
输出
只有一行输出,为整数M,即f(1)到f(N)的累加和。
样例输入
3
样例输出
5
题解:我们考虑对于每一个i(i<n),它作为因子出现的次数都是n/i,于是这题等价于求sum(n/i)(1<=i<=n)
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>
#include <queue>
#include <stack>
#include <map>
#include <vector>
#include <limits.h>
#include <malloc.h>
#include <ctype.h>
#include <float.h>
using namespace std;
int i,n,ans;
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++)
ans+=n/i;
printf("%d\n",ans);
return 0;
}