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