0
已解决
高子健
新手天翼
新手天翼
#include<bits/stdc++.h>
using namespace std;
int n,cnt;
bool cmp(int n){
if(n==1)
return false;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)
return false;
}
return true;
}
int main(){
cin>>n;
if(n==1){
cout<<"0";
return 0;
}
for(int i=1;i<=n;i++){
int j=i+2;
if(cmp(i)&&cmp(j))
cnt++;
}
cout<<cnt;
return 0;
}
什么情况
long long没用试过了
加了特判
没超时
0
已采纳
黄依成
中级天翼
中级天翼
4471数据水了
如果有一个数据点是11,就过不去了
因为11和13都是质数,但超过11了
最大只能到9和11
所以循环是从1到n-2
0
江子周
中级守护
中级守护
题目要求找出不超过n的素数对的个数,所以循环应该是1~(n-2),这样就对了
PS:0的话不用加特判,1也是(而且,埃氏筛法更快一些)
0
周明轩
资深光能
资深光能
可能i+2已经超过n了
所以得把:
for(int i=1;i<=n;i++){
int j=i+2;
if(cmp(i)&&cmp(j))
cnt++;
}
改成:
for(int i=1;i<=n;i++){
int j=i+2;
if(cmp(i)&&cmp(j)&&j<=n)
cnt++;
}
就AC了:
望采纳
0