題目鏈接:https://www.luogu.org/problem/P1579
任何一個大于9的奇數都可以表示成3個質數之和,既然他是奇數,那么他必定是
1、兩個偶數+一個奇數;
2、三個奇數
對于兩個偶數,也只有2滿足條件,因此他只能是2、2、n-4;只要判斷n-4是否滿足質數就OK了;
對于兩個奇數,回圈判斷一下,從i=3開始,找到 i 之后, j 從 i 開始,找到 j 之后,再判斷n-i-j是否滿足條件
以下代碼可供參考:
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1001; 4 int isprime(int k) 5 { 6 for(int i=2;i<=sqrt(k);i++) 7 { 8 if(k%i==0) 9 return 0; 10 } 11 return 1; 12 } 13 int main() { 14 int n; 15 cin>>n; 16 if(isprime(n-4)) 17 { 18 cout<<2<<' '<<2<<' '<<n-4<<endl; 19 } 20 else 21 { 22 for(int i=3;i<n;i++) 23 { 24 if(i%2!=0&&isprime(i)) 25 { 26 for(int j=i;j<n;j++) 27 { 28 if(j%2!=0&&isprime(j)) 29 { 30 if((n-i-j)%2!=0&&isprime(n-i-j)) 31 { 32 cout<<i<<' '<<j<<' '<<n-i-j<<endl; 33 return 0; 34 } 35 } 36 } 37 } 38 } 39 } 40 return 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93405.html
標籤:C++
上一篇:cin.get()解密
