java 小算法

 //鸡兔同笼 20个头 58腿
        for(int a=0;a<=20;a++) {
            int b = 20-a;
            if((2*b+4*a)==58) {
                System.out.println(a+","+b);
            }
        }
//百钱买百鸡 公鸡 3 母鸡 2 小鸡一元三只
    //方法一:这种方法是错的 原因c/3  这个根据钱的数量进行循环
    for(int i=0;i<100;i++) {
        for(int j=0;j<100;j++) {
            int c = 100-i-j;
            if((i*3+j*2+c/3)==100) {
                System.out.println(i+","+j+","+c);
            }
        }
    }
//方法2:还可以根据数量进行循环
    for(int a=0;a<=33;a++) {
        int x = (100-a*3)/2; //母鸡的数量
        for(int b=0;b<=x;b++) {
            int c = 100-a-b;
            if(c%3!=0)continue;
            if((a*3+b*2+c/3)==100) {
                System.out.println(a+","+b+","+c);
            }
            
        }
    }
    //冒泡排序
        int[] a = {4,5,3,6,8,7,9};
        
        for(int i=0;i<a.length-1;i++) {
            for(int j=0;j<a.length-1-i;j++)
            if(a[j]<a[j+1]) {
                int t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
                
            }
        }
        for(int i=0;i<a.length;i++) {
            System.out.print(a[i]+"	");    
        }
        
    //选择排序
        int[] a = {1,5,3,6,8,7,9};
        
        for(int i=0;i<a.length-1;i++) {
            for(int j=i+1;j<a.length;j++) {
                
                if(a[i]>a[j]) {
                    int t = a[i];
                    a[i] = a[j];
                    a[j] =t;
                }
            }
        }
        for(int i=0;i<a.length;i++) {
            System.out.print(a[i]);
        }
public class departSort {
  public static void main(String[] args) {
        int[] a = {2,4,6,7,9};
        //二分查找算法  
    
        
        System.out.println(search(a,7,0,a.length-1));
        
}

private static int search(int[] a, int value, int start, int end) {
    // TODO Auto-generated method stub
     if(start>end) {
            return -1;
        }
    int middle = (start+end)/2;
    int middleValue  = a[middle];
   

    if(value>middleValue) {
        return search(a, value, middle+1, end);
    }
    else if(value<middleValue) {
        return search(a, value, start, middle-1);
    }
    else return middle;
    
  }
}
//查重算法1
     int[] a = {2,1,6,4,5,6,1,4,2};
     int b = 012;
     System.out.println(b);
        //查重算法  112244566
        Arrays.sort(a);
        boolean flag = false;
        for(int i=0;i<a.length-1;i+=2) {
            if(a[i]!=a[i+1]) {
                flag = true;
                System.out.println(a[i]);
                break;
            }
            
        }
        if(!flag) {
            System.out.println(a[a.length-1]);                                                                                                                      
            
        }
        
//查重算法二:充分利用异或相同为0不同为1
      int[] a= {1,4,4,6,7,9,6,7,1};
      int result=0;
      for(int i=0;i<a.length;i++) {
          result ^= a[i];
      }
      System.out.println(result);     
//桶排序
        int[] a= {1,5,3,6,2,3,4,6,9};
        int[] b = new int[21];
        for(int i=0;i<a.length;i++) {
            b[a[i]]++;
        }
        for(int i=0;i<a.length;i++) {
            //b[i]中有几个数就循环打印几次
            for(int j=1;j<=b[i];j++) {
                System.out.print(i+"	");
            }
        }
import java.util.Scanner;
public class Test24{
 public static void main(String[] args){ 
     Scanner sc =  new Scanner(System.in);
      int n = sc.nextInt();
    for(int i=1;i<=n;i++){
     for(int j=1;j<=n-(i-1);j++){
         System.out.print(j+"	"); 
    }
      System.out.println(); 
    }
 
 }
 
}

import java.util.Scanner;
public class Test25{
   public static void main(String[] args){ 
      System.out.println("请输入一个正整数:");
      Scanner s = new Scanner(System.in);
    int n = s.nextInt(); 
    for(int i=1;i<=n;i++){
      for(int j=1;j<=n-i;j++){
        System.out.print(" "); 
     }
      for(int j=1;j<=2*i-1;j++){
        System.out.print("*"); 
     }
        System.out.println(); 
  }
  }
  }

//. 验证哥德巴赫猜想:任何一个大于 6 的偶数,都能分解成两个质数的和。
//要求输入一个整数,输出 这个数能被分解成哪两个质数的和。
//例如:输入一个整数 14 输出结果:14=3+11 14=7+7

public class Exc13{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        int n= s.nextInt();
        
        if (n <= 6 || n % 2 !=0) {
            System.out.println("输入有误");
            return ;
        }
        //一个数的加数最多是这两个加数相同,否则必定会一个大于1/2另外一个小于1/2 
        //所以循环的时候只需要循环一个数的1/2即可只要找到一个必定会找到另外一个
        for(int a = 3 ; a <= n/2 ; a+=2){
            int b = n-a;
            //判断加数是不是质数
            if (isPrime(a) && isPrime(b) ){
                System.out.println(a+"+"+b);
            }
        }
    }
    
    public static boolean isPrime(int x){
    
        double d = Math.sqrt(x);
        for(int i = 3 ; i <= d ; i+=2){
            if (x % i == 0) return false;
        }
        return true;
    }
}
12. 编程:如果整数 A 的全部因子(包括 1,不包括 A 本身)之和等于 B,且整数 B 的全部因子包
括 1,不包括 B 本身)之和等于 A,则称整数 AB 是一对亲密数;求 3000 以内的全部亲密数。 
 
public class Test12 {
public static void main(String[] args) {
for (int i = 1; i <= 3000; i++) {
   int b = sumAllFact(i); // i的因子和为b
   int a = sumAllFact(b); // b的因子和为a
// 分析:如果a == i,意味着a的因子和为b,
// b的因子和为a,满足亲密数的要求
// 同时,为了避免重复解,要求a < b
if (a < b && a == i) {
  System.out.println(a + " " + b);
    }
   }
}
// 计算因子和的函数
public static int sumAllFact(int n) {
  int sum = 0;
for (int i = 1; i <= n / 2; i++) {
   if (n % i == 0)
   sum += i;
   }
   return sum;
  }
}

 在国际象棋的棋盘上, 放置8个皇后, 要求任何两个皇后之间,不能相互吃掉, 请输出所有的放置的可能

 
public class EightQueen {
    public static void main(String[] args) {
        
        int[] a = new int[8]; //a[i]=j  第i行的皇后放在第j列
        place(a , 0);
    }
    
    //计算第row行的皇后放在第几列 a[row]=?
    static void place(int[] a , int row){
        if (row == 8) {
            for(int i = 0 ; i < 8 ; i++){
                System.out.print(a[i]+"	");
            }
            System.out.println();
            return;
        }
        
        //把第row行的皇后放好
        outer:for(a[row] = 0; a[row] < 8;a[row]++){
            //判断a[row] 和 前面的row行是不是冲突
            for(int i = 0 ; i< row; i++){
                //判断a[row] 和 a[i]是不是冲突
                if(a[row]==a[i] || a[row]-a[i]==row-i || a[row]-a[i]==i-row)
                    continue outer;
            }
            //放下一行
        
            place(a , row+1);
        }
        
        
    }
    

}
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/zhulina-917/p/11214714.html