java算法汇总(一)

1.有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子涨到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月兔子总数为多少?

程序分析:斐波那契数列 0.1.1.2.3.5.8.13.21

    /**
     * 斐波那契数列
     * @param months
     * @return
     */
    public static int fib(int months) {
        if(months==0){
            return 0;
        }else if(months==1){
            return 1;
        }else{
            return fib(months - 1) + fib(months - 2);
        }
    }
View Code

2.判断101~200之间的有多少个素数,并输出所有素数

程序分析:素数判断方法  除去一和本身 没有其他因数

    /**
     *  求 A - B 之间的素数
     */
    public static void zs(int start,int end){
        int count = 0;
        List<Integer> zsList = new ArrayList<>();
        for(int i = start;i<=end;i++){
            if(isZs(i)){
                count++;
                zsList.add(i);
            }
        }
        if(zsList!=null&&zsList.size()>0){
            for (Integer integer : zsList) {
                System.out.println(integer);
            }
        }
        System.out.println("总数:"+count);
    }
    
    public static boolean isZs(int num){
        //除了 1 和 他本身没有其他因数
        for(int i= 2;i<num;i++){
            if(num%i==0){
                return  false;
            }
        }
        return true;
    }
View Code

3.打印所有的水仙花数

程序分析:水仙花数指 一个三位数,每位上面的数的立方和等于这个三位数。

    /**
     * 三位数水仙花
     */
    public static void sxh(){
        for (int i = 100; i < 1000; i++) {
            int bw = i/100;
            int sw = i/10%10;
            int gw = i%10;
            if((bw*bw*bw + sw*sw*sw + gw*gw*gw)==i){
                System.out.println("水仙花"+i);
            }
        }
    }
View Code

 4.将一个正整数分解质因数  eg: 90 = 2*3*3*5

程序分析:1、如果n是质数,就直接结束,打印出来就好  

     2、如果i能整除n,就打印i,然后更新n = n / i;递归   

     3、如果i不能整除n,就i++

    public static void fjzys(int number) {
        // 递归实现
        for (int i = 2; i <= number; i++) {
            if (i == number) {
                System.out.print(i);
                return;
            }
            if (number > i && (number % i == 0)) {
                System.out.print(i + "*");
                fjzys(number / i);
                break;
            }
        }
    }
View Code

 5.求两个正整数m,n的最大公约数,最小公倍数

原文地址:https://www.cnblogs.com/wenbuzhu/p/9705665.html