文章目錄
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