21.回文数。【了解】
 问题描述:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
 public class lianxi { 
     public static void main(String[] args) { 
         Scanner s = new Scanner(System.in); 
         int a; 
         do{ 
             System.out.print("请输入一个5 位正整数:");
             a = s.nextInt(); 
         }while(a<10000||a>99999); 
         String ss =String.valueOf(a); 
         char[] ch = ss.toCharArray(); 
         if(ch[0]==ch[4]&&ch[1]==ch[3]){
             System.out.println("这是一个回文数");
         } else {
             System.out.println("这不是一个回文数");
         } 
     }
 }
//这个更好,不限位数
 public class lianxi{ 
     public static void main(String[] args) { 
         Scanner s = new Scanner(System.in);
         boolean is =true;
         System.out.print("请输入一个正整数:");
         long a = s.nextLong();
         String ss = Long.toString(a); 
         char[] ch = ss.toCharArray(); 
         int j=ch.length; 
         for(int i=0; i<j/2; i++) { 
             if(ch[i]!=ch[j-i- 1])
                 is=false;
         }
         if(is==true){
             System.out.println("这是一个回文数");
         } else {
             System.out.println("这不是一个回文数");
         }
     }
 }
 22.判断100之内的素数。【重点】
 //使用除sqrt(n)的方法求出的素数不包括2 和3 
 public class lianxi { 
     public static void main(String[] args) { 
         boolean b =false; 
         System.out.print(2 + " ");
         System.out.print(3 + " ");
         for(int i=3; i<100; i+=2) { 
             for(int j=2; j<=Math.sqrt(i); j++) { 
                 if(i % j == 0) {
                     b = false;
                     break;
                 } else{
                     b = true;
                 } 
             }
             if(b == true) {
                 System.out.print(i + " ");
             } 
         }
     } 
 }
 //该程序使用除1 位素数得2 位方法,运行效率高通用性差。 
 public class lianxi { 
     public static void main(String[] args) { 
         int[] a = new int[]{2, 3, 5, 7};
         for(int j=0; j<4; j++)
             System.out.print(a[j] + " ");
         boolean b =false;
         for(int i=11; i<100; i+=2) {
             for(int j=0; j<4; j++) { 
                 if(i % a[j] == 0) {
                     b = false; break;
                 } else{
                     b = true;
                 } 
             }
             if(b == true) {
                 System.out.print(i + " ");
             }
         }
     } 
 }
 23.3*3矩阵对角线元素之和。【了解】
 public class lianxi { 
     public static void main(String[] args) { 
         Scanner s = new Scanner(System.in); 
         int[][] a = new int[3][3];
         for(int i=0; i<3; i++) { 
             for(int j=0; j<3; j++) { 
                 a[i][j] = s.nextInt();
             }
         }
         System.out.println("输入的3 * 3 矩阵是:");
         for(int i=0; i<3; i++) { 
             for(int j=0; j<3; j++) { 
                 System.out.print(a[i][j] + " "); 
             }
             System.out.println(); 
         }
         int sum = 0; 
         for(int i=0; i<3; i++) {
             for(int j=0; j<3; j++) { 
                 if(i == j) { 
                     sum += a[i][j]; 
                 }
             }
         }
         System.out.println("对角线之和是:"+sum); 
     }
 }
 24.杨辉三角形。【了解】
       1
      1 1 
     1 2 1 
    1 3 3 1 
   1 4 6 4 1 
 1 5 10 10 5 1 
 public class lianxi{ 
     public static void main(String[] args) { 
         int[][] a = new int[10][10]; 
         for(int i=0; i<10; i++) { 
             a[i][i] = 1; a[i][0] = 1;
         }
         for(int i=2; i<10; i++) { 
             for(int j=1; j<i; j++){
                 a[i][j] = a[i-1][j-1] + a[i-1][j]; 
             }
         }
         for(int i=0; i<10; i++) {
             for(int k=0; k<2*(10-i)-1; k++) {
             System.out.print(" ");
         }
         for(int j=0; j<=i; j++) { 
             System.out.print(a[i][j] + " ");
         }
             System.out.println();
     }
 }
 25.报数游戏。【了解】
 问题描述:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
 public class lianxi { 
     public static void main(String[] args) {
         Scanner s = new Scanner(System.in);
         System.out.print("请输入排成一圈的人数:");
         int n = s.nextInt();
         boolean[] arr = new boolean[n]; 
         for(int i=0; i<arr.length; i++) { 
             arr[i] = true; 
         }
         int leftCount = n; 
         int countNum = 0; 
         int index = 0;
         while(leftCount > 1) {
             if(arr[index] == true) {
                 countNum ++; 
                 if(countNum == 3) {
                     countNum =0; 
                     arr[index] = false; 
                     leftCount --; 
                 }
             }
             index ++;  
         }
         index = 0;
     }
     for(int i=0; i<n; i++) { 
         if(arr[i] == true) {
             System.out.println("原排在第"+(i+1)+"位的人留下了。");
         }
     }
 }
 26.猴子分桃。【了解】
 问题描述:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
 public class lianxi{ 
     public static void main (String[] args) { 
         int i,m,j=0,k,count; 
         for(i=4;i<10000;i+=4) { 
             count=0; m=i; 
             for(k=0;k<5;k++) {
                 j=i/4*5+1; 
                 i=j; 
                 if(j%4==0) 
                     count++;
                 else 
                     break; 
             } 
             i=m; 
             if(count==4) {
                 System.out.println("原有桃子"+j+" 个");
                 break;
             }
         }
     }
 }
 27.一个偶数总能表示为两个素数之和。【了解】
 //由于用除sqrt(n)的方法求出的素数不包括2 和3,
 //因此在判断是否是素数程序中人为添加了一个3。 
 public class lianxi{ 
     public static void main(String[] args) {
         Scanner s = new Scanner(System.in); 
         int n,i; 
         do{
             System.out.print("请输入一个大于等于6 的偶数:");
             n = s.nextInt(); 
         } while(n<6||n%2!=0); 
         //判断输入是否是>=6 偶数,不是,重新输入 
         fun fc = new fun(); 
         for(i=2;i<=n/2;i++){ 
             if((fc.fun(i))==1&&(fc.fun(n-i)==1)) {
                 int j=n-i; 
                 System.out.println(n+" = "+i+" + "+j);
             } 
             //输出所有可能的素数对 
         } 
     }
 }
 class fun{ 
     //判断是否是素数的函数
     public int fun (int a) {
         int i,flag=0; 
         if(a==3){
             flag=1;
             return(flag);
         } 
         for(i=2;i<=Math.sqrt(a);i++){ 
             if(a%i==0) {
                 flag=0;
                 break;
             } else 
                 flag=1;
         } 
         return (flag) ;
         //不是素数,返回0,是素数,返回1 
     }
 }
//解法二 
 import java.util.*;
 public class lianxi {
     public static void main(String[] args) { 
         Scanner s = new Scanner(System.in);
         int n; 
         do{
             System.out.print("请输入一个大于等于6 的偶数:");
             n = s.nextInt();
         } while(n<6||n%2!=0); 
         //判断输入是否是>=6 偶数,不是,重新输入
         for(int i=3;i<=n/2;i+=2){ 
             if(f un(i)&&fun(n-i)) {
                 
             } 
             //输出所有可能的素数对
         } 
     }
     static boolean fun (int a){
         //判断是否是素数的函数
         boolean flag=false; 
         if(a==3){
             flag=true;return(flag);
         } 
         for(int i=2;i<=Math.sqrt(a);i++){ 
             if(a%i==0) {
                 flag=false;
                 break;
             } else 
                 flag=true;
         } 
         return (flag) ; 
     }
 }
 28.选择排序。【重点】
 /**
 * 选择排序
 * 在未排序序列中找到最小元素,存放到排序序列的起始位置。
 * 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。
 * 以此类推,直到所有元素均排序完毕。
 */ 
 public static void selectSort(int[] numbers) { 
     int size = numbers.length, temp;
     for (int i = 0; i < size; i++) { 
         int k = i; 
         for (int j = size - 1; j >i; j--) {
             if (numbers[j] < numbers[k]) 
                 k = j; 
         }
         temp = numbers[i];
         numbers[i] = numbers[k]; 
         numbers[k] = temp;
     } 
 }
 29.插入排序。【重点】
 /**
 * 插入排序
 * 从第一个元素开始,该元素可以认为已经被排序
 * 取出下一个元素,在已经排序的元素序列中从后向前扫描
 * 如果该元素(已排序)大于新元素,将该元素移到下一位置
 * 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
 * 将新元素插入到该位置中
 * 重复步骤2
 */ 
 public static void insertSort(int[] numbers) { 
     int size = numbers.length, temp, j;
     for(int i=1; i<size; i++) { 
         temp = numbers[i];
         for(j = i; j > 0 && temp < numbers[j-1]; j--) 
             numbers[j] = numbers[j-1]; 
         numbers[j] = temp; 
     }
 }