Homework
求一个区间[A,B]中素因数个数为K的数有多少个。做法是dp。对每个数i,找到它的某一个素因数d,i的结果就由i/d推得。找的方法是修改筛法。
#include <iostream>
#include <stdio.h>
#include <string>
#include <map>
#include <vector>
#include <stack>
#include <queue>
#include <string.h>
#include <algorithm>
using namespace std;
const int maxn=1e7;
int divisor[maxn+10];
int dp[maxn+10];
int main(){
for(int i=2;i*i<=maxn;i++){
if(divisor[i])continue;
for(int j=2*i;j<=maxn;j+=i){
divisor[j]=i;
}
}
for(int i=2;i<=maxn;i++){
if(divisor[i]){
int j=i/divisor[i];
dp[i]=dp[j];
if(j%diviso