PAT 1099 性感素数 分数20分 知识点:素数

51 阅读1分钟

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;
}