题目描述
现在请你编一个程序验证哥德巴赫猜想。
先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数。
输入输出格式
输入格式:
仅有一行,包含一个正奇数n,其中9
#include<bits/stdc++.h>
using namespace std;
bool isprime[20001];
void sushushaixuan()
{
memset(isprime, true, sizeof(isprime));
for (int i = 4; i <= 20001; i += 2) // 所有大于 2 的偶数全都不是素数,首先划掉
isprime[i] = false;
for (int i = 2; i <= 20001; i++)
{
if (isprime[i])
for (long long j = i * i; j <= 20001; j += i + i)
isprime[j] = false;
}
}
int main(){
sushushaixuan();
int n;
while(~scanf("%d",&n)){
for(int i=2;i<=n-4;i++){
for(int j=2;j<=n-4;j++){
int k=n-i-j;
if(isprime[i]&&isprime[j]&&isprime[k]){
printf("%d %d %d\n",i,j,k);
return 0;
}
}
}
}
}