查找组成一个偶数最接近的两个素数
题目来源
牛客网:查找组成一个偶数最接近的两个素数
题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
数据范围:输入的数据满足 4≤n≤1000
输入描述
输入一个大于2的偶数
输出描述
从小到大输出两个素数
示例1
输入
20
输出
7
13
输入
4
输出
2
2
思路分析
- 素数:指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
- 判断素数方法:判断n是否为素数,从2开始遍历到n的平方根,如果没有能整除n的数,则n为素数
- 找能组成个一偶数n差值最小的两个素数,定义两个数等于n/2,左边的数自增,右边自减,判断左右两个数都为素数则输出。
以20为例,从10开始,分别向左向右寻找第一对素数:
代码展示
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
//判断素数
bool IsPrime(int n)
{
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
int main() {
int n = 0;
cin >> n;
int left = n / 2;
int right = n / 2;
while (left > 0)
{
if (IsPrime(left) && IsPrime(right))
{
cout << left << endl;
cout << right << endl;
break;
}
left--;
right++;
}
return 0;
}