约数个数
約數(shù)個數(shù)
題目大意:
求a到b之間每個數(shù)的約數(shù)的個數(shù)之和
原題:
題目描述
定義f(x)為x的約數(shù)個數(shù),x為正整數(shù)。
=f(a)+f(a+1)+……+f(b),即a,b之間每個數(shù)的約數(shù)的總和。
輸入
一行兩個正整數(shù)a、b,以一個空格隔開。
輸出
一行一個整數(shù),即答案。
輸入樣例
2 6
輸出樣例
13
說明
【數(shù)據(jù)范圍】
對于50%的數(shù)據(jù),1≤a≤b≤1000;
對于100%的數(shù)據(jù),1≤a≤b≤10,000,000。
解題思路:
我們想要求出這個答案,只需求出1-a的每個數(shù)的約數(shù)的個數(shù)和1-b的每個數(shù)的約數(shù)的個數(shù),再相減就行了,然而這個結(jié)果可以直接用1-b之間的每個數(shù)來當(dāng)除數(shù),a或b來當(dāng)被除數(shù),商就是有這個約數(shù)的數(shù)有多少個,然后相加在一起就可以了
代碼:
#include<cstdio> using namespace std; 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);//輸出結(jié)果 }總結(jié)
- 上一篇: 安藤忠雄的著作及作品有哪些
- 下一篇: pdf文件怎么转换doc文件 如何将pd