任务题(第四周)

2019-03-24  本文已影响0人  mwj610

1.题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题

package cn.itcast.demo01;
public class Rabbit {
    public static void main(String[] args) {
        System.out.println("第1个月的兔子对数:    1");
        System.out.println("第2个月的兔子对数:    1");
        int f1 = 1, f2 = 1, f, M = 24;
        for (int i = 3; i <= M; i++) {
            f = f2;
            f2 = f1 + f2;
            f1 = f;
            System.out.println("第" + i + "个月的兔子对数: " + f2);
        }
    }
}

2.题目:判断 101-200 之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除, 则表明 此数不是素数,反之是素数。

package cn.itcast.demo01;
public class PrimeNumber {
    public static void main(String[] args) {
        for (int i = 101; i < 201; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    flag = false;
                    continue;
                }
            }
            if (flag) {
                System.out.print(i + " ");
            }
        }
    }
}
  1. 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和 等于该数本身。例如:153 是一个 "水仙花数 ",因为 153=1 的三次方+5 的三次方+3 的 三次方
package cn.itcast.demo01;
public class NarcissisticNumber {
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            int g = i % 10;
            int s = i % 100 / 10;
            int b = i / 100;
            if (g * g * g + s * s * s + b * b * b == i) {
                System.out.println(i);
            }
        }
    }
}
  1. 题目:将一个正整数分解质因数。例如:输入 90,打印出 90=233*5。 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:
    (1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。
    (2)如果 n <> k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 你 n,重复执行第一步。
    (3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。
package cn.itcast.demo01;
import java.util.Scanner;
public class Resolve {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        fenjie(number);
    }
    public static void fenjie(int n) {
        System.out.printf("%d = ", n);
        for (int i = 2; i < n + 1; i++) {
            while ((n % i == 0) && (n != i)) {
                n = n / i;
                System.out.print(i + "*");
            }
            if (i == n) {
                System.out.println(i);
                break;
            }
        }
    }
}
  1. 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90 分的同学用 A 表示,60-89 分之 间的用 B 表示,60 分以下的用 C 表示。
package cn.itcast.demo01;
import java.util.Scanner;
public class Score {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        chengJi(number);
    }
    public static void chengJi(int score) {
        if (score < 0 || score > 100) {
            System.out.println("成绩无效");
        } else {
            String s1 = (score >= 90) ? "A" : (score >= 60) ? "B" : "C";
            System.out.println(s1);
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读