无平方因子的数

/*给出正整数n,m(n

--*/

#include
#include
#include
#include
#include


using namespace std;


int vis[1000000+5];
int prime[1000000+5];
int squre[10000000+5];
int k,n,M;




void prepare(){
memset(vis,0,sizeof(vis));
for(int i=2;i<=10000;i++)if(!vis[i])
for(int j=i*i;j<=1000000;j+=i)vis[j]=1;

for(int i=2;i<=1000000;i++){
if(vis[i]!=1){
prime[k++]=i;
}
}
memset(squre,0,sizeof(squre));
for(int i=0;prime[i]*prime[i]<=M;i++){
int d=prime[i]*prime[i];
for(int j=1;j*d<=M;j++){
if(j*d>=n){
squre[j*d-n]=1;
}
}
}
int ans=0;
for(int i=0;i<=M-n;i++){
if(squre[i]==0){
ans++;
}
}
printf("%d",ans);
}




int main() {
scanf("%d",&n);
scanf("%d",&M);
prepare();
return 0;



你可能感兴趣的:(数论)