题目描述
任意一个偶数(大于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;
}