1.題目描述
連結
https://www.nowcoder.com/questionTerminal/f8538f9ae3f1484fb137789dec6eedb9?toCommentId=289324
任意一個偶數(大于2)都可以由2個素數組成,組成偶數的2個素數有很多種情況,本題目要求輸出組成指定偶數的兩個素數內插補點最小的素數對
輸入描述: 輸入一個偶數
輸出描述: 輸出兩個素數
2.思路解析
- 先寫一個判斷是不是素數的函數
- 循環輸入n值
- i值從n的一半開始,這裡–操作
- n-i 相當于++操作,然後同時判斷是不是素數
- 是的話就直接列印,退出
- 不是就繼續循環
3.代碼實作
#include <iostream>
#include <cmath>
using namespace std;
// 判斷是不是素數
bool Prime(int n)
{
int i = 2;
for(i; i <= sqrt(n); i++)
{
if(n % i == 0)
return false;
}
if(i > sqrt(n))
return true;
}
int main()
{
int n = 0;
// 循環輸入
while(cin >> n)
{
// 這裡i + (n - i) 正好等于n,是以直接判斷同時是不是素數,是的話那就直接列印
// 因為兩個數相加等于n值,隻要判斷是不是素數即可
for(int i = n / 2; i >= 2; i--)
{
if(Prime(i) && Prime(n - i))
{
// 列印
cout << i << endl << n - i<< endl;
break;
}
}
}
return 0;
}