哥德巴赫猜想:任一大于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=2e5+5; ll 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; }
(2023牛客暑期多校训练营3-H)Until the Blue Moon Rises-题解
于 2023-09-09 15:04:16 首次发布