题目描述

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

输入描述:

输入一个偶数

输出描述:

输出两个素数

示例
输入

20

输出

7
13

题目分析

  • 首先应该判断出一个数是否为素数。这里判断素数的范围采用从2到开平方根n,如果这个区间有个数能使n能被整除,说明n不是素数;如果没有,n就是素数。
  • 从这个偶数的1/2去向两边找合适的素数,这样就可以保证两素数差值最小,如果找到了跳出循环即可。

参考代码

#include <iostream>#include <math.h>using namespace std;bool isPrime(int n){    int sq = sqrt(n);    for(int i = 2; i <= sq; ++i)    {        if(n%i == 0)            return false;    }    return true;}int main(){    int num;    while(cin >> num)    {        int half = num/2;        int i = 0;        for(i = half; i > 2; ++i)        {            if(isPrime(i) && isPrime(num-i))                break;        }        cout << num-i << endl << i << endl;    }    return 0;}
©著作权归作者所有:来自51CTO博客作者星辰之洛的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 基础数论总结
  2. 公钥密码的三大数学问题
  3. BigInteger类的使用方法
  4. Android(安卓)人脸识别 ERROR: Return 0 faces because error ex
  5. Api Demo - .graphics(17)
  6. Android利用BitMap获得图片像素数据的方法
  7. android利用BitMap获得图片的像素数据
  8. Android(安卓)视觉规范
  9. android 作适配

随机推荐

  1. SQL SERVER创建链接服务器
  2. 删除除了MySQL中的行之外的所有重复行?(
  3. sqlserver 差异备份与还原示例
  4. 彻底理解初始化参数SERVICE_NAMES和客户
  5. MySQL实现表之间的字段更新
  6. MYsql 5.1 安装过程报错 /bin/rm: cannot
  7. 自己写了一个简单的mysql数据库连接类
  8. mysql有时查询很慢的原因?
  9. MySQL 笔记(三)由 txt 文件导入数据
  10. MySQL 事务没有提交导致锁等待