题目描述
求出所有1到n每个数字约数个数的和。
样例输入
3
样例输出
5
思路
O(n)
一开始想过筛素数,也想过有没有什么规律,然后想到了从1~n去枚举每个约数有多少个。发现约数包含某个数字的个数是n div 那个数字,然后规律就出来了。
var
i,k,n:longint;
begin
readln(n);
for i:=2 to n do
k:=k+n div i;
writeln(k+n);
end.
求出所有1到n每个数字约数个数的和。
3
5
O(n)
一开始想过筛素数,也想过有没有什么规律,然后想到了从1~n去枚举每个约数有多少个。发现约数包含某个数字的个数是n div 那个数字,然后规律就出来了。
var
i,k,n:longint;
begin
readln(n);
for i:=2 to n do
k:=k+n div i;
writeln(k+n);
end.