• 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的最大公约数,最小公倍数

  • 相关阅读:
    使用postman解决接口之间的接口依赖
    loadrunner11安装
    记录一次搭建jmeter分布式压测环境时creatermikeystore.bat不是内部命令
    jmeter分布式压测环境搭建(jmeter版本5.1.1,jdk版本jdk1.8.0_221)
    jmeter基于windows分布式压测环境搭建
    Chrome浏览器一直请求clients1.google.com:443
    Nginx 配置支持C++
    Ubuntu Sublime Text 设置等宽字体
    取任意四边形最长边
    调用Lua脚本print(xxx)报attempt to call a nil value (global 'print')错误
  • 原文地址:https://www.cnblogs.com/wenbuzhu/p/9705665.html
Copyright © 2020-2023  润新知