问题描述
求出区间[a,b]中所有整数的质因数分解,统计一共有多少种不同的分法。
输入格式
输入两个整数a,b。
输出格式
输出一行,一个整数,代表区间内质因数分解方法之和。
样例输入
6 10
样例输出
10
样例说明
6的质因数为2和3,一共有2个。7的质因数为7,只有1个。8的质因数有2、2、2,一共有3个。9的质因数有3、3,一共有2个。10的质因数有2和5,一共有2个。所以答案为2+1+3+2+2=10.
数据规模和约定
2<=a<=b<=10000
#include<iostream>
using namespace std;
int main()
{
int a,b,i,k,m,n(0);
cin>>a>>b;
//不用先判断是否为质数
for(k=a;k<=b;k++){
m=k;//不可直接用k分解,因分解完后永远(k=1,k++=2)
while(m>1){
i=2;//最小可能的质因数
while(m%i!=0)i++;//直接i++,不用专门挑出质数去分解,若i++=合数,早已被其最小质因数分解,故无需挑出质数
n++;//质因数个数加一
m/=i;
}
}
cout<<n;
return 0;
}