1. 实例 11
1.1 题目
古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
1.2 思路
兔子的规律为数列1,1,2,3,5,8,13,21…,即下个月是上两个月之和(从第三个月开始),利用递归求每个月的兔子数,然后求和
1.3 代码
/**
* @ClassName : Eleven
* @Author : cunyu1943
* @Date : 2020/6/19 16:42
* @Version : 1.0
* @Description : 实例 11
**/
public class Eleven {
public static void main(String[] args) throws Exception {
for (int i = 1; i <= 40; i++) {
int sum = 0;
sum += Sum(i);
System.out.format("第 %d 个月的兔子总数是: %d", i, sum);
System.out.println();
}
}
/**
* @return 第 n 个月的兔子数
* @MethodName Sum
* @Author cunyu1943
* @Date 17:07 2020/6/19
* @Param n 第 n 个月
* @Description 求第 n 个月的兔子数
**/
public static int Sum(int n) {
int count = 0;
// 第 1, 2 个月为 1,从第三个三月开始为前两月之和
if (n == 1 || n == 2) {
return 1;
} else {
count = Sum(n - 1) + Sum(n - 2);
}
return count;
}
}
1.4 结果
第 1 个月的兔子总数是: 1
第 2 个月的兔子总数是: 1
第 3 个月的兔子总数是: 2
第 4 个月的兔子总数是: 3
第 5 个月的兔子总数是: 5
第 6 个月的兔子总数是: 8
第 7 个月的兔子总数是: 13
第 8 个月的兔子总数是: 21
第 9 个月的兔子总数是: 34
第 10 个月的兔子总数是: 55
第 11 个月的兔子总数是: 89
第 12 个月的兔子总数是: 144
第 13 个月的兔子总数是: 233
第 14 个月的兔子总数是: 377
第 15 个月的兔子总数是: 610
第 16 个月的兔子总数是: 987
第 17 个月的兔子总数是: 1597
第 18 个月的兔子总数是: 2584
第 19 个月的兔子总数是: 4181
第 20 个月的兔子总数是: 6765
第 21 个月的兔子总数是: 10946
第 22 个月的兔子总数是: 17711
第 23 个月的兔子总数是: 28657
第 24 个月的兔子总数是: 46368
第 25 个月的兔子总数是: 75025
第 26 个月的兔子总数是: 121393
第 27 个月的兔子总数是: 196418
第 28 个月的兔子总数是: 317811
第 29 个月的兔子总数是: 514229
第 30 个月的兔子总数是: 832040
第 31 个月的兔子总数是: 1346269
第 32 个月的兔子总数是: 2178309
第 33 个月的兔子总数是: 3524578
第 34 个月的兔子总数是: 5702887
第 35 个月的兔子总数是: 9227465
第 36 个月的兔子总数是: 14930352
第 37 个月的兔子总数是: 24157817
第 38 个月的兔子总数是: 39088169
第 39 个月的兔子总数是: 63245986
第 40 个月的兔子总数是: 102334155
2. 实例 12
2.1 题目
判断101到200之间的素数。
2.2 思路
用一个数分别去除 2 到 sqrt(这个数),如果能被整除, 则表明此数不是素数,反之则是素数
2.3 代码
/**
* @ClassName : Twelve
* @Author : cunyu1943
* @Date : 2020/6/19 17:19
* @Version : 1.0
* @Description : 实例 12
**/
public class Twelve {
public static void main(String[] args) throws Exception {
int count = 0;
for (int i = 101; i < 200; i++) {
// 设置标志位,true 则是素数,false 则不是
boolean flag = true;
for (int j = 2; j <= (int) Math.sqrt(i); j++) {
if (i % j == 0) {
flag = false;
}
}
// 根据标志位进行输出
if (flag == true) {
System.out.print(i + "\t");
count += 1;
// 每行输出 5 个就换行
if (count % 5 == 0) {
System.out.println();
}
}
}
}
}
2.4 结果
101 103 107 109 113
127 131 137 139 149
151 157 163 167 173
179 181 191 193 197
199
3. 实例 13
3.1 题目
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
3.2 思路
遍历所有三位数,将每个数分解出个位、十位、百位,然后判断是否满足水仙花数,满足就输出
3.3 代码
/**
* @ClassName : Thirteen
* @Author : cunyu1943
* @Date : 2020/6/19 17:32
* @Version : 1.0
* @Description : 实例 13
**/
public class Thirteen {
public static void main(String[] args) throws Exception {
int digit = 0;
int decade = 0;
int unit = 0;
System.out.println("水仙花数如下:");
// 遍历三位数
for (int i = 100; i < 1000; i++) {
// 分别计算个位、十位、百位
digit = i / 100;
decade = i / 10 % 10;
unit = i % 10;
// 若满足水仙花数条件则输出
if (i == (digit * digit * digit + unit * unit * unit + decade * decade * decade)) {
System.out.println(i);
}
}
}
}
3.4 结果
水仙花数如下:
153
370
371
407
4. 实例 14
4.1 题目
将一个正整数分解质因数。例如:输入 90 ,打印出
4.2 思路
对于要分解的正整数 n,先找出一个最小的质数 k,
- 若该质数恰好等于 n,,则说明分解过程结束,打印输出就可以了
- 若 n 能被 k 整除,则打印 k 的值,同时 ,然后重复执行这一步
- 若 n 不能被 k 整除,则 ,重复执行 (1)
4.3 代码
import java.util.Scanner;
/**
* @ClassName : Fourteen
* @Author : cunyu1943
* @Date : 2020/6/20 8:39
* @Version : 1.0
* @Description : 实例 14
**/
public class Fourteen {
public static void main(String[] args) throws Exception {
Scanner inputs = new Scanner(System.in);
System.out.println("输入要分解的数:");
int num = inputs.nextInt();
System.out.print(num + " = ");
for (int i = 2; i <= num; i++) {
// 若 num 能被 i 整除,则打印 i,同时将 num 除以 i 的商,作为新的正整数 num
while (num % i == 0) {
System.out.print(i + "");
num /= i;
if (num != 1) {
System.out.print(" * ");
}
}
}
}
}
4.4 结果
输入要分解的数:
34
34 = 2 * 17
5. 实例 15
5.1 题目
利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
5.2 思路
直接利用条件运算符嵌套判断打印输出即可
5.3 代码
import java.util.Scanner;
/**
* @ClassName : Fifteen
* @Author : cunyu1943
* @Date : 2020/6/20 9:01
* @Version : 1.0
* @Description : 实例 15
**/
public class Fifteen {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("输入成绩:");
int score = input.nextInt();
// 利用条件语句进行判断
if (score >= 90) {
System.out.println("A");
} else if (score >= 60 && score < 90) {
System.out.println("B");
} else {
System.out.println("C");
}
}
}
5.4 结果
输入成绩:
78
B
转载:https://blog.csdn.net/github_39655029/article/details/106869168
查看评论