1099 性感素数 - PAT (Basic Level) Practice (中文) (pintia.cn)
解析:PAT乙级 1099 性感素数_哔哩哔哩_bilibili
首先,如果x是素数,那我们就判断x-6是否为素数,如果x-6是素数,那就输出x-6.
否则如果x-6不是素数,那么我们就输出x的另一半性感素数,即x+6(也需要判断x+6是否为素数)
否则如果连x都不是性感素数,那么我们就要重新找比x大的最小性感素数。
#include<bits/stdc++.h>
using namespace std;
inline bool isprime(int x)
{
if(x<2)return 0;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)return false;
}
return true;
}
int main()
{
int x;cin>>x;
if(isprime(x)&&isprime(x-6)) //如果x是素数,并且x-6也是素数,那么就输出较小的那一个
{
cout<<"Yes"<<endl;
cout<<x-6<<endl;
}
else if(isprime(x)&&isprime(x+6)) //否则如果x-6不是性感素数且x是性感素数,就输出x的另一对性感素数
{
cout<<"Yes"<<endl;
cout<<x+6<<endl;
}
else //否则x不是性感素数,我们就找比x大的最小的性感素数
{
cout<<"No"<<endl;
for(int i=x+1;;i++)
if(isprime(i)&&(isprime(i-6)||isprime(i+6))) //如果x是素数并且 x有另一半也是素数(不论是x-6,x+6) ,说明x就是性感素数,输出
{
cout<<i<<endl;
break;
}
}
return 0;
}