想着把很久以前做的题目再回顾一下啊
这个题目就是给两个整数 ab 先求出ab之间非素数的整数个数 包括ab
然后再求这个数的log+1
改进了两个地方 一个是log用cmath的库函数 log2
另一个是 这次素数打表了
bool型的 100w的一个数组正好是1mb
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
const int maxn=1000001;
bool arr[maxn];
void init()
{
int i,j;
memset(arr,0,sizeof(arr));
arr[1]=0;
arr[2]=1;
for(i=3;i<maxn;i+=2)
arr[i]=1;
for(i=3;i<maxn;++i)
{
if(arr[i])
{
for(j=i+i;j<maxn;j+=i)
arr[j]=0;
}
}
}
/*
int log(int a)
{
int ca=1;
for(int i=0;i<1000;i++)
{
if(ca>a)
{
return i;
break;
}
else
ca*=2;
}
}
*/
int main()
{
init();
int a,b,i,counter=0;
scanf("%d %d",&a,&b);
for(int i=a;i<=b;++i)
{
if(!arr[i])
counter++;
}
int res=(int)log2(counter)+1;
printf("%d\n",res);
// printf("%d\n",log(counter));
return 0;
}