问题描述:判断N是否质数,不是再判断N-6,然后N+6,都不是,再++N。
解题思路:都不是输出No,否则输出Yes,再输出质数。
AC代码:
#include<iostream>
#include<cmath>
using namespace std;
bool isp(int n)
{
if(n<2)return false;
int x=sqrt(n);
for(int i=2;i<=x;++i){
if(n%i==0)return false;
}
return true;
}
int main()
{
//freopen("test.txt","r",stdin);
int N;
scanf("%d",&N);
bool f=0;
while(1){
if(isp(N)){
if(isp(N-6)){
if(!f)N-=6;
break;
}else if(isp(N+6)){
if(!f)N+=6;
break;
}
}
f=1;++N;
}
if(f)printf("No\n");
else printf("Yes\n");
printf("%d",N);
return 0;
}