题目
定义f(x)为x的约数个数,x为正整数。
求 =f(a)+f(a+1)+……+f(b),即a,b之间每个数的约数的总和。
题解
枚举a到b,求约数,超时50分
求约数的个数就是求在a,b之间有数i为约数的有多少个。求1到x之间为i的约数有多少,计算x/i可得
时间复杂度O(n)
代码
var
a,b,i,x,y,j:longint;
begin
assign(input,'shlqsh.in');
assign(output,'shlqsh.out');
reset(input);
rewrite(output);
readln(a,b);
j:=a-1;
for i:=1 to j do
x:=x+j div i;
for i:=1 to b do
y:=y+b div i;
writeln(y-x);
close(input);
close(output);
end.