@[xyx0202](/user/973958) az,这也太暴力了吧。
by Still_Alive_ @ 2023-08-23 11:41:28
@[xyx0202](/user/973958) 你会欧拉筛么?
by Still_Alive_ @ 2023-08-23 11:42:24
@[xyx0202](/user/973958) 你可以先用欧拉筛把1~$10^6$的素数都筛出来,然后再用前缀和做。
by Still_Alive_ @ 2023-08-23 11:44:34
@[Still_Alive_](/user/1062742)
**OK**
**我**~~逝世~~**试试**
by xyx0202 @ 2023-08-23 11:52:09
@[Still_Alive_](/user/1062742)
**先去吃饭(**
**~~麻了~~**
by xyx0202 @ 2023-08-23 11:54:50
@[xyx0202](/user/973958)
在你的`bool prime`里,i其实有可能等于一
所以加个特判吧。
还有TLE的话,把输入输出改成scanf和printf试试?
如果有帮助的话,就……祝你AC愉快!(笑脸
by RKYSSS @ 2023-08-23 11:57:09
@[RKYSSS](/user/1061404)
**谢谢祝福**~~(bushi)~~
by xyx0202 @ 2023-08-23 11:59:28
其实你可以用用[这个](https://baike.baidu.com/item/%E5%9F%83%E6%8B%89%E6%89%98%E6%96%AF%E7%89%B9%E5%B0%BC%E7%AD%9B%E6%B3%95/374984?fr=ge_ala),
应该是能百分百AC的嫩
by RKYSSS @ 2023-08-23 12:09:10
@[RKYSSS](/user/1061404)
**用原方法做的,加了特判,改了输入方式**
**现在只报三个时间~~充裕~~了**
**看来只能换方法力**~~QWQ~~
by xyx0202 @ 2023-08-23 19:15:33
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int p[2000000000];
long long l,r;
int n,m;
int ipnum(long long l,long long r);
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%lld%lld",&l,&r);
if(r>m||l<1){
printf("Crossing the line\n");
continue;
}
printf("%d\n",ipnum(l,r));
}
return 0;
}
int ipnum(long long l,long long r){
int tot,cn;
memset(p,0,sizeof(p));
for(int i=0;i<=r;i++){
p[i]=1;
}
for(int i=l+1;i<=n;i++){
if(p[i]==1) tot++;
cn=i*2;
while(cn<=n){
p[cn]=0;
cn+=i;
}
}
return tot;
}
```
**各位大佬,换了一个思路,样例没问题,可是为什么编译错误啊!QAQ**
~~思路是2014年普及组看程序写结果第四问提供的~~
**离大谱**
by xyx0202 @ 2023-08-23 19:35:05