zoukankan      html  css  js  c++  java
  • 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的最大公约数,最小公倍数

  • 相关阅读:
    解决QPainter::drawText修改文字方向
    解决linux环境下qt groupbox 边框不显示问题
    人既然知道努力就可以进步,为什么还是会不努力?
    学会锻炼感悟爱与幸福的能力
    IT人为什么难以拿到高薪?
    在你月薪三千的时候,做月薪八千的事
    哪些人最终能留在北京?
    如何利用数据挖掘进行分析的方法
    查找附近的人
    dapper 操作类封装
  • 原文地址:https://www.cnblogs.com/wenbuzhu/p/9705665.html
Copyright © 2011-2022 走看看