JAVA算法解析:从古典问题到素数检测
需积分: 16 135 浏览量
更新于2024-07-24
收藏 179KB DOC 举报
"JAVA算法42例"
在编程领域,算法是解决问题的核心,而Java作为一种流行的编程语言,常常被用于实现各种算法。以下是基于给定文件的三道Java算法实例的详细解析:
1. **斐波那契数列**
题目描述:计算斐波那契数列的前20项。斐波那契数列定义为:F(1) = 1, F(2) = 1, F(n) = F(n-1) + F(n-2) (n>=3)。程序通过递归和循环两种方式实现了这个功能。
- **递归实现**:
```java
public static int f(int x) {
if (x == 1 || x == 2)
return 1;
else
return f(x - 1) + f(x - 2);
}
```
- **循环实现**:
为了提高效率,通常避免使用递归,因为它可能导致大量的重复计算。可以使用动态规划存储之前计算过的值,减少重复计算。
```java
public static int fib(int n) {
if (n <= 2)
return 1;
int[] fibArray = new int[n + 1];
fibArray[1] = fibArray[2] = 1;
for (int i = 3; i <= n; i++)
fibArray[i] = fibArray[i - 1] + fibArray[i - 2];
return fibArray[n];
}
```
2. **素数判断**
题目描述:找出101到200之间的所有素数。素数是指大于1且除了1和它自身外没有其他正因数的自然数。程序通过遍历并检查每个数是否为素数来实现。
- **素数判断方法**:
```java
public boolean isPrime(int x) {
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
```
- 这里使用了平方根的优化,因为一个非素数必定存在一个小于等于其平方根的因数。
3. **水仙花数**
题目描述:找到所有“水仙花数”。水仙花数是指一个三位数,其各位数字立方和等于该数本身,例如153(1^3 + 5^3 + 3^3 = 153)。
- **水仙花数的查找**:
```java
public static void findNarcissisticNumbers() {
for (int num = 100; num <= 999; num++) {
int a = num / 100;
int b = (num / 10) % 10;
int c = num % 10;
if (a * a * a + b * b * b + c * c * c == num)
System.out.println(num);
}
}
```
- 这里通过将三位数分解为百位、十位和个位,然后分别计算它们的立方和来判断是否为水仙花数。
这些例子展示了基础算法的实现,包括递归、循环、数组、条件判断等,对于初学者来说是非常好的学习素材。通过这些实例,学习者可以逐步理解如何运用Java解决实际问题,同时提升编程思维和算法能力。
2024-03-10 上传
2019-07-30 上传
2014-08-23 上传
2013-06-04 上传
2014-09-13 上传
2011-10-12 上传
2015-04-08 上传
2013-05-28 上传
2014-03-25 上传
YIDWF
- 粉丝: 2
- 资源: 4
最新资源
- 天池大数据比赛:伪造人脸图像检测技术
- ADS1118数据手册中英文版合集
- Laravel 4/5包增强Eloquent模型本地化功能
- UCOSII 2.91版成功移植至STM8L平台
- 蓝色细线风格的PPT鱼骨图设计
- 基于Python的抖音舆情数据可视化分析系统
- C语言双人版游戏设计:别踩白块儿
- 创新色彩搭配的PPT鱼骨图设计展示
- SPICE公共代码库:综合资源管理
- 大气蓝灰配色PPT鱼骨图设计技巧
- 绿色风格四原因分析PPT鱼骨图设计
- 恺撒密码:古老而经典的替换加密技术解析
- C语言超市管理系统课程设计详细解析
- 深入分析:黑色因素的PPT鱼骨图应用
- 创新彩色圆点PPT鱼骨图制作与分析
- C语言课程设计:吃逗游戏源码分享