每个数i作为约数的次数为n/i。累加即可,复杂度O(n)。
#include<cstdio> using namespace std; //const int maxn = 100000 + 10; //int a[maxn]; int main() { int n,ans = 0; scanf("%d",&n); for(int i = 1; i <= n; i++) ans += n / i; printf("%d ",ans); return 0; }