求最大连续bit数
要点
常见的两个位运算
代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
int sum=0;
int max=0;
while (n != 0) {
if ((n & 1) == 1){
sum++;
max=Math.max(sum,max);
}else{
sum=0;
}
n = n>>1;
}
System.out.println(max);
}
}
二进制插入
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
// write code here
int k=m<<j;
return k|n;
}
}
查找组成一个偶数最接近的两个素数
思路
先需要判断素数,素数表示除过1和本身,不能被其它数整除。通过循环遍历来判断一个数是否为素
\数。最近的两个素数应该从最中间的位置开始向两边查找。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc=new Scanner(System.in);
//这两个素数可以组成这个偶数
int []arr=new int[2];
while(sc.hasNext()){
int n=sc.nextInt();
for(int i=n/2;i>0;i--){
if(isNum(i)&&isNum(n-i)){
arr[0]=i;
arr[1]=n-i;
break;
}
}
System.out.println(arr[0]);
System.out.println(arr[1]);
}
}
//素数:这个数只能被1和他自身整除
public static boolean isNum(int num){
for(int i=2;i<num;i++){
if(num%i==0){
return false;
}
}
return true;
}
}