1. 题目来源
链接:查找组成一个偶数最接近的两个素数
来源:牛客网
2. 题目说明
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
输入描述:
输入一个偶数
输出描述:
输出两个素数
示例1
输入
20
输出
7
13
3. 题目解析
本题首先需要判断素数,素数表示除过1和本身,不能被其它数整除。通过循环遍历来判断一个数是否为素数。最近的两个素数应该从最中间的位置开始向两边查找。
4. 代码展示
#include <bits/stdc++.h>
using namespace std;
// 素数判断
bool isPrime(int num) {
int tmp = sqrt(num); // 数学基础
for (int i = 2; i <= tmp; ++i) {
if (num % i == 0)
return false;
}
return true;
}
int main() {
int num, half, i;
while (cin >> num) {
half = num / 2;
// 从中间行两边找
for (i = half; i > 0; --i) {
if (isPrime(i) && isPrime(num - i))
break;
}
cout << i << endl << num - i << endl;
}
return 0;
}