题目概述
每个正数 N的约数的个数f(N)
求:
输入输出
输入:一个n
输出:求和
题目求解
- 含1的约数有n/1个,含2的约数有n/2个,,含i的约数有n/i个,整个遍历加一下就行
using namespace std;
#include <iostream>
#include <algorithm>
int main ()
{
int n,i,sum=0;
cin>>n;
for(i=1;i<=n;i++)
{
sum=sum+n/i;
}
cout<<sum;
}
- 逐个遍历,每次把 i 的倍数的+1,则<= i 的数(i 因数)都加了, i 的因子数就求出来了
using namespace std;
#include <iostream>
#include <algorithm>
int a[1000005];
int main ()
{
int i,n,j;
cin>>n;
int sum=0;
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j=j+i)
{
a[j]=a[j]+1;
}
sum=sum+a[i];
}
cout<<sum;
}