题目描述
定义f(x)为x的约数个数,x为正整数。
=f(a)+f(a+1)+……+f(b),即a,b之间每个数的约数的总和。
输入
一行两个正整数a、b,以一个空格隔开。
输出
一行一个整数,即答案。
输入样例复制
2 6
输出样例复制
13
说明
【数据范围】
对于50%的数据,1≤a≤b≤1000;
对于100%的数据,1≤a≤b≤10,000,000。
思路
求a~b的约数个数,然后相减就可以了。
#include<cstdio>
int a,b,aa,bb;
int main()
{
scanf("%d%d",&a,&b);
a--;//先减
for(int i=1;i<=b;i++)//求约数个数。
{
aa+=a/i;
bb+=b/i;
}
printf("%d",bb-aa);//相减
}