洛谷 P1579 哥德巴赫猜想(升级版)
数据量很小,看有暴力check能做出来的,有规律优化的,可以线性筛,埃筛,反正怎么筛都行,枚举一下就AC了,甚至可以开个200010的数组打个质数表,我这里用的埃筛AC的。
AcCode:
#include<iostream>
#include<cmath>
#include<bitset>
using namespace std;
bitset<20010> nPrime;
void ePrime(int n){
nPrime[0] = nPrime[1] = 1;
int c = sqrt(n); //预处理
for(int i = 2; i <= c; i++){
if(!nPrime[i]) for(int j = i * i; j <= n; j += i) nPrime[j] = 1;
}
}
int main(){
int n;
cin >> n;
ePrime(n); //筛
for(int i = 2; i < n; i++){
for(int j = 2; j < n; j++){
if(!nPrime[i] && !nPrime[j] && !nPrime[n - i - j]){
cout << i << " " << j << " " << n - i - j; //找到就输出
return 0;
}
}
}
return 0;
}