题目描述
给定两个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;
return m|n;
}
}
n 1024 010000000000
m 19 10011
j=2,i=6
将m左移j位,m|n就可以得到结果
题目描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
本题含有多组样例输入。
输入描述:
输入一个偶数
输出描述:
输出两个素数
示例1
输入
20
输出
7
13
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
int half = n / 2;
for(int i = half; i > 0; i++){
if(isPrime(i) && isPrime(n - i)){
System.out.println(n - i);
System.out.println(i);
break;//跳出循环,否则会运行超时
}
}
}
}
//判断素数
public static boolean isPrime(int x){
for(int i = 2; i < x; i++){
if(x % i == 0){
return false;
}
}
return true;
}
}