[牛课习题]查找组成一个偶数最接近的两个素数
16lz
2021-02-08
题目描述
任意一个偶数(大于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博客作者星辰之洛的原创作品,如需转载,请注明出处,否则将追究法律责任
更多相关文章
- 基础数论总结
- 公钥密码的三大数学问题
- BigInteger类的使用方法
- Android(安卓)人脸识别 ERROR: Return 0 faces because error ex
- Api Demo - .graphics(17)
- Android利用BitMap获得图片像素数据的方法
- android利用BitMap获得图片的像素数据
- Android(安卓)视觉规范
- android 作适配