首页 > 编程语言 > 详细

java 算法整合

时间:2021-07-16 15:19:54      阅读:28      评论:0      收藏:0      [点我收藏+]

题目1、有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?

思路分析:

f(1) = 1(第1个月有一只兔子)

f(2) = 1(第2个月还是一只兔子)

f(3) = 2(原来有一只兔子,第3个开始,每个月生一只兔子)

f(4) = 3(原来有只对兔子,有一只可以生育)、

f(5) = 5(原来有3只兔子,第3个月出生的那只兔子也可以生育了,那么现在有只对兔子可以生育)

f(6) = 8(原来有5只兔子,第4个月出生的那只兔子也可以生育了,那么现在有3只兔子可以生育)

代码案例:

public class Demo01 {
    public static void main(String args[]) {
        for (int i = 1; i <= 20; i++)
            System.out.println(f(i));
    }
    public static int f(int x) {
        if (x == 1||x == 2)
            return 1;
        else
            return f(x - 1) + f(x - 2);
    }
}

 题目2、判断101-200之间有多少个素数,并输出所有素数?

思路分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

代码案例

public class Demo02{
    public static void main(String[] args){
List list = new ArrayList<>();
for(int i=101;i<=200;i++){ boolean flag=true; for(int j=2;j<i;j++){ if(i%j==0){ flag=false; break; } } if(flag==true){ System.out.print(" "+i); }
list.add(i); }
System.out.println(list.size); } }

题目3、打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数 ,因为153=1的三次方+5的三次方+3的三次方?

思路分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位

代码案例:

public class Demo03 {
    public static void main(String args[]) {
        math mymath = new math();
        for (int i = 100; i <= 999; i++)
            if (mymath.shuixianhua(i) == true)
                System.out.println(i);
    }
}
class math {
    public boolean shuixianhua(int x) {
        int i = 0, j = 0, k = 0;
        i = x/100;
        j = (x%100)/10;
        k = x%10;
        if (x == i*i*i + j*j*j + k*k*k)
            return true;
        else
            return false;
    }
}

 题目4、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5?

思路分析:

对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成;

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n > i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你,重复执行第一步。
(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。

代码案例:

import java.util.Scanner;
public class Demo04 {
    public Demo04() {
        super();
    }
    public void fenjie(int n) {
        for (int i = 2; i <= n; i++) {
            if (n % i == 0) {
                System.out.print(i);
                if(n!=i){
                    System.out.print("*");
                }
                fenjie(n/i);
            }
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入N的值:");
        int N = in.nextInt();
        System.out.print( "分解质因数:" + N +"=");
        new Demo04().fenjie(N);
    }
}

 

java 算法整合

原文:https://www.cnblogs.com/zhaoyunbo/p/15020008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!