哥德巴赫猜想:任一大于5的整数都可写成三个质数之和。
由此可以得到两种情况:
1.强哥德巴赫猜想:任一大于2的偶数都可写成两个质数之和6=3+3......
(未被证明,但是同时也没有被推翻,即在本体的范围内强哥猜成立)
2.弱哥德巴赫猜想:任何一个大于5的奇数都能被表示成三个奇质数的和
(已经被证明)
本题有三种情况:
1.n=1时,即A为质数时成立
2.n=2时,可以分为两种情况:(1).和为偶数时,使用强哥德巴赫猜想。(2).和为奇数时,当
且仅当和sum-2为质数时成立,因为奇数只能由一个奇数和一个偶数相加得到,除了2以外的偶数
都不是质数,所以只能是2+a,即a为质数时才成立,所以减去2。
3.n>2时,此时就可以运用弱哥德巴赫猜想了,如n=3时,只要和大于5,也就是和为6时是最小
的成立条件(2+2+2)。以此类推,只要满足和sum>=2*n即可。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e8+5;
int zhi(ll x)
{
if(x==1) return 0;
for(ll i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
ll n,sum=0,a[N];
cin>>n;
for(ll i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
if(sum<2*n) cout<<"NO";
else if(n==1)
{
if(zhi(sum)) cout<<"YES";
else cout<<"NO";
}
else if(n==2&&sum%2==1)
{
if(zhi(sum-2)) cout<<"YES";
else cout<<"NO";
}
else cout<<"YES";
return 0;
}