题意:就是筛选法一样筛选一些数字,不过筛选的序列号
思路:只找小于n的,一开始放入奇数,保证a[n]这个数是大于n的,然后再覆盖处理。
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e6+10;
int a[maxn];
int n,m;
void dfs(int u){
int cnt=u;
if(a[u]>n) return;
for(int i=u;i<n;i++){
if(i%a[u]) a[cnt++]=a[i];
}
dfs(u+1);
}
int main(){
cin>>m>>n;
for(int i=1;i<=n;i++){
a[i]=i*2-1;
}
dfs(2);
int ans=0;
for(int i=1;i<n;i++){
if(a[i]>m&&a[i]<n) ans++;
}
cout<<ans<<endl;
return 0;
}