华为机试——查找组成一个偶数最接近的两个素数

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明引用出处:http://blog.csdn.net/u012260238 https://blog.csdn.net/u012260238/article/details/50488044

题目:查找组成一个偶数最接近的两个素数

任意一个偶数(大于2)都可以由两个素数组成,组成偶数的2个素数有很多冲情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int n)
{
    if(n<2) return false;
    int m=static_cast<int>(sqrt(static_cast<double>(n)));
    for(int i=2;i<=m;i++)
        if(n%i==0) 
            return false;
    return true;
}
void findPrimeNumber(int num)
{
    for(int i=num/2;i>=2;i--)
        if(isPrime(i) && isPrime(num-i))
        {
            cout<<i<<" "<<num-i<<endl;
            break;
        }
}

int main()
{
    int number;
    cin>>number;
    if(number%2!=0)
        return -1;
    findPrimeNumber(number);
    return 0;
}
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页