1.二进制插入
给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
测试样例:
1024,19,2,6
返回:1100
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
//首先将m左移j位
m <<= j;
//m和n按位或,两个值,只要有一个为1,其值为1
return n | m;
}
}
2.查找组成一个偶数最接近的两个素数
描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
数据范围:输入的数据满足 4 \le n \le 1000 \4≤n≤1000
输入描述:
输入一个大于2的偶数
输出描述:
从小到大输出两个素数
示例1
输入:
20
复制输出:
7 13
复制
示例2
输入:
4
复制输出:
2 2
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sca = new Scanner(System.in);
while(sca.hasNext()){
int n = sca.nextInt();
//要求两个数素数差值最小,因为就从中间开始向两边扩散
for(int i = n /2;i>=2;i--){
if(sushu(i) && sushu(n-i)){
System.out.println(i);
System.out.println(n-i);
break;
}
}
}
}
//判断一个数是否是素数,即一个数除了1和它本身,没有其他得因数
private static boolean sushu(int m){
for(int i = 2; i < m;i++){
if(m % i == 0){
return false;
}
}
return true;
}
}