B - Primeshttps://vjudge.csgrandeur.cn/problem/Gym-102267B如果两个质数的和仍是质数,据出可知这两个质数中必须有一个质数是2,因为除了2以外其它质数都是奇数,而奇数+奇数==偶数,偶数一定不是质数。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+10;
int primes[N],cnt;
bool st[N];
bool prime(int x)
{
if(x<2)return false;
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
return false;
}
return true;
}
void get(int n)
{
for(int i=2;i<=n;i++)
{
if(st[i])continue;
primes[cnt++]=i;
for(int j=i+i;j<=n;j+=i)
{
st[j]=true;
}
}
}
signed main()
{
int n;
scanf("%lld",&n);
// get(n);
int t=n-2;
if(prime(t))判断t是否为质数
printf("2 %lld",t);
else
printf("-1");
// if(2+primes[cnt-2]==n)
// printf("2 %lld",primes[cnt-2]);
// else
// printf("-1");
// for(int i=0;i<cnt;i++)
// {
// printf("%lld\n",primes[i]);
// }
}