题目
描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
譬如:输入20 ,输出 7 13
约束
number为输入的偶数,5 < inum <= 10000
输入
输入一个偶数
输出
输出两个素数
样例输入
20
样例输出
7
13
思路
1.判断素数
2. 从中间开始查找
代码
#include <iostream>
#include <math.h>
using namespace std;
bool isprime(int num)
{
if(num<2)
{
return false;
}
if(2==num)
{
return true;
}
for(int i=2; i<=sqrt((double)num); i++)
{
if(num%i==0)
{
return false;
}
}
return true;
}
void findPrimeNumber(int number)
{
//从中间找是差值最小的(如果从两边找则是差值最大的)
for(int i=number/2; i>=2; --i)
{
if(isprime(i)&&isprime(number-i))
{
cout<<i<<endl;
cout<<number-i<<endl;
break;
}
}
}
int main()
{
int a;
cin>>a;
if(a>5 && a <= 10000 && a%2==0)
{
findPrimeNumber(a);
}
else
{
return -1;
}
return 0;
}