给出正整数n和m,区间[n,m]内的质数有多少个?
1<=n<=m<=10^12,m-n<=10^7;
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const int N=1e7+5;
typedef long long LL;
LL n,m;
int check[N];
void Judge(){
memset(check,0,sizeof(check));
int p,t=sqrt(m+0.5);
for(int i=2;i<=t;i++){
int q=ceil((double)n/i);
if(q<i) p=i*i;
else p=i*q;
for(;p<=m;p+=i)
check[p-n]=1;
}
int cnt=0;
for(int i=0;i<=m-n;i++)
if(!check[i]) cnt++;
cout<<cnt<<endl;
}
区间[n,m]内的“无平方因子”的数有多少个?
1<=n<=m<=10^12,m-n<=10^7;
代码如下:
void Judge2()
{
memset(check,0,sizeof(check));
int i,j,p=sqrt(m+0.5);
for(i=2;i<=p;i++){
for(j=i*i;j<=m;j+=i*i) if(j>=n)check[j-n]=1;
}
int cnt=0;
for(int i=0;i<=m-n;i++)
if(!check[i]) cnt++;
cout<<cnt<<endl;
}