hdu 1262分拆素数

来源:互联网 发布:seo综合查询工具 编辑:程序博客网 时间:2024/06/05 21:01

题意:

                 
    给一个偶数,输出两个彼此最接近的素数,其和等于该偶数.

Sample Input
20 30 40
 

Sample Output
7 1313 1717 23

题解:
          通过观察7 13关于10对称,13和17关于15对称,所以两个素数是关于偶数的一半对称的。所以我们只需要从1暴力枚举到偶数的一半,计算出另一个数,并判断两个数是不是都是素数即可。

代码:
       
#include <iostream>#include <cstdio>#include <cmath>using namespace std;bool isprime(int num){    int judge = sqrt(num);    for(int i=2;i<=judge;i++)        if(num%i==0) return false;    return true;}int main(){    int M;    while(cin>>M)    {        int mid = M/2;        for(int i=mid;i>0;i--)        {            if(isprime(i))            {                int right = mid+(mid-i);                if(isprime(right))                {                    cout<<i<<" "<<right<<endl;                    break;                }            }        }    }    return 0;}

原创粉丝点击