1099 性感素数 测试点3

易错点

if((is_nature(n)==1&&is_nature(n+6)==1)||(is_nature(n)==1&&is_nature(n-6)==1)){

此处判断不能只考虑(n+6)为素数的情况,而忽略了(n-6)为素数的情况

代码

#include <iostream>
#include <cstdio>

using namespace std;

bool is_nature(int a){
	if(a<2){
		return 0;
	}
	else if(a==2){
		return 1;
	}
	if(a%2==0&&a!=2){
		return 0;
	}
	for(int i=3;i*i<=a;i+=2){
		if(a%i==0){
			return 0;
		}
	}
	return 1;
}
int main()
{
	int n;
	cin>>n;
	if(is_nature(n-6)==1&&is_nature(n)==1){
		cout<<"Yes"<<endl;
		cout<<(n-6);
	}
	else if(is_nature(n+6)==1&&is_nature(n)==1){
		cout<<"Yes"<<endl;
		cout<<(n+6);
	}
	else{
		cout<<"No"<<endl;
		while(true){
			n++;
			if((is_nature(n)==1&&is_nature(n+6)==1)||(is_nature(n)==1&&is_nature(n-6)==1)){
				cout<<n;
				break;
			}
		}
	}
	

	return 0;
}
posted @ 2022-07-14 23:51  qwasdasd  阅读(151)  评论(0)    收藏  举报