查詢組成一個偶數最接近的兩個素數/華為機試(C/C++)
阿新 • • 發佈:2018-12-12
題目描述
任意一個偶數(大於2)都可以由2個素陣列成,組成偶數的2個素數有很多種情況,本題目要求輸出組成指定偶數的兩個素數差值最小的素數對
輸入描述:
輸入一個偶數
輸出描述:
輸出兩個素數
示例1
輸入
20
輸出
7 13
程式碼:
//第五十八題 查詢組成一個偶數最接近的兩個素數 #include<iostream> using namespace std; bool PrimeNumber(int n) { for (int i = 2; i < n; i++) if ((n - n / i*i) == 0) return false; return true; } int main() { int n; while (cin >> n) { if ((n & 1) || n<3) continue; int bn = n >> 1; int bnL = bn; int bnR = bn; for (int i = bnL; i > 1; i--) { if (PrimeNumber(i)) { bnL = i; break; } } for (int i = bnR; i < n; i++) { if (PrimeNumber(i)) { bnR = i; break; } } int total = bnL + bnR; while (total != n) { if (total < n) { for (int i = bnR+1; i < n; i++) { if (PrimeNumber(i)) { bnR = i; break; } } } else { for (int i = bnL-1; i > 1; i--) { if (PrimeNumber(i)) { bnL = i; break; } } } total = bnL + bnR; } cout << bnL << endl << bnR << endl; } return 0; }