洛谷试炼场-简单数学问题
P1403 [AHOI2005]约数研究
Description
科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samuel II”进行数学研究。
小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。例如12的约数有1、2、3、4、6、12。因此f(12)=6。下表给出了一些f(N)的取值:
Input
输入一行,一个整数n
Output
输出一个整数,表示总和
Sample Input
3
Sample Output
5
Hint
【数据范围】
20%N<=5000
100%N<=100000
普及组
题解:
如果单独一个数或者某些数的约数,应该是用唯一分解定律,看其质数的因子,最后排列组合一下。
重点在于一个公式:
f(i)=n/i
至于公式是怎么推出来的:
1-n的因子个数,可以看成共含有2因子的数的个+含有3因子的数的个数……+含有n因子的数的个数但在1~n中含有“2”这个因子的数有n/2个,3有n/3个,以此类推,公式就出来了
代码
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
long long sum=0;
cin>>n;
for(int i=1;i<=n;i++)
sum+=n/i;
cout<<sum<<endl;
}