二进制插入
链接:添加链接描述
这道题目还是比较简单的,题目中规定了被插入数的插入位置一定是0,所以把插入数左移j位再与被插入数进行或运算(|)即可。
示例代码:
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
m <<= j;
return n | m;
}
};
偶数最接近的素数对
题目要求是寻找距离最近的素数对,所以我们可以从偶数的中间开始找,依次判断是否都为素数。
示例代码:
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
//判断素数
bool isPrime(int num){
int tmp = sqrt(num);
//只遍历到开方出,不能被开方左边的数整除,则一定不能被开方右边的数整除
for (int i = 2; i <= tmp; i++){
if (num %i == 0)
return false;
}
return true;
}
int main(){
int num;
int half;
int i;
while (cin >> num){
half = num / 2;
//从中间向两边找
for (i = half; i > 0; i--){
if (isPrime(i) && isPrime(num - i))
break;
}
cout << i << endl << num - i << endl;
}
return 0;
}