查找组成一个偶数最接近的两个素数
2014-06-23 23:59
826 查看
功能:查找组成一个偶数最接近的两个素数
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
//实例:20 输出:7 13
思路:先找出满足条件自身和sum-自身都是素数的数,之后再运用循环来找出距离最近的两个素数
参考代码:
运行结果:
算法巧妙之处:
1)判断是否为素数时,只需要设置初始为2,最大值为a/2,而不是a,这样大大提高运算效率。
2)找出距离最短的distance,很巧妙设置初始距离min = 0;之后利用一个if(min == 0 || min > distance)逻辑运算条件来覆盖min,同时更新min,并且利用新的参数t保存j.(这点非常重要)
这里还需要强调一点这个if不能用while,否则就死循环了,要区分if和while的区别。
——To_捭阖_youth 0:02
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
//实例:20 输出:7 13
思路:先找出满足条件自身和sum-自身都是素数的数,之后再运用循环来找出距离最近的两个素数
参考代码:
//功能:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对 //实例:20 输出:7 13 #include <iostream> using namespace std; //判断一个数是否为素数 bool JudgIsPrime(const int a) { for(int i = 2;i <= a/2; i++) { if(a % i == 0) return 0; } return 1; } int main() { int b; cin >> b; //非偶数异常输入 while(b % 2 != 0) return 0; int j,distance,t = 0; int min = 0; for(j = 2; j <= b/2; j++) { if (JudgIsPrime(j) && JudgIsPrime(b - j)) { distance = b - j -j; if (min==0 || min > distance) { min = distance; t = j; } } } cout << t << endl; cout << (b - t) << endl; }
运行结果:
算法巧妙之处:
1)判断是否为素数时,只需要设置初始为2,最大值为a/2,而不是a,这样大大提高运算效率。
bool JudgIsPrime(const int a) { for(int i = 2;i <= a/2; i++) { if(a % i == 0) return 0; } return 1; }
2)找出距离最短的distance,很巧妙设置初始距离min = 0;之后利用一个if(min == 0 || min > distance)逻辑运算条件来覆盖min,同时更新min,并且利用新的参数t保存j.(这点非常重要)
这里还需要强调一点这个if不能用while,否则就死循环了,要区分if和while的区别。
if (JudgIsPrime(j) && JudgIsPrime(b - j)) { distance = b - j -j; if (min==0 || min > distance) { min = distance; t = j; } }
——To_捭阖_youth 0:02
相关文章推荐
- 华为OJ——查找组成一个偶数最接近的两个素数
- 【华为 OJ 】查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- Java算法---华为oj查找组成一个偶数最接近的两个素数
- 华为oj_查找组成一个偶数最接近的两个素数
- 【华为OJ】【051-查找组成一个偶数最接近的两个素数】
- 【华为oj】查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 华为OJ:查找组成一个偶数最接近的两个素数
- 华为oj 查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 华为OJ 查找组成一个偶数最接近的两个素数 Java实现
- 查找组成一个偶数最接近的两个素数
- 华为OJ 查找组成一个偶数最接近的两个素数
- 华为OJ 初级:查找组成一个偶数最接近的两个素数
- 华为机试——查找组成一个偶数最接近的两个素数
- 华为机试在线训练-牛客网(28)查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数