Java编程:经典算法实例解析
需积分: 9 179 浏览量
更新于2024-09-18
收藏 49KB TXT 举报
"Java经典问题算法大全"
在Java编程中,算法是解决问题的关键,而解决经典问题的算法有助于提升编程技巧和思维能力。本资源涵盖了三个经典的Java算法问题,包括斐波那契数列、寻找指定范围内的素数数量以及找出特定范围内的水仙花数。
1. **斐波那契数列**:
斐波那契数列是一个非常著名的数列,定义为:每个数字是前两个数字的和。初始值为0和1。给定的问题中,程序计算了前15个月斐波那契数列中的第i个月的兔子对数。这里的代码实现了一个简单的for循环,通过迭代计算每一个月的兔子对数。在每次迭代中,当前的f2(即当前月的兔子对数)更新为f1(上个月的兔子对数)加上f(上上个月的兔子对数),然后f1再更新为f2。最后,程序将结果输出。
```java
public static final int MONTH = 15;
public static void main(String[] args) {
long f1 = 1L, f2 = 1L;
long f;
for (int i = 3; i < MONTH; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.print(i + "个月的兔子对数:");
System.out.println(f2);
}
}
```
2. **寻找素数**:
第二个问题是找出101到200之间的所有素数。素数是大于1且只有1和其本身能整除的自然数。这里采用的方法是遍历从2到当前数的平方根,检查是否能被整除,如果能则不是素数。如果没有任何因子能整除,那么该数就是素数,并将其打印出来。最后,统计并输出这个范围内找到的素数总数。
```java
public static int count = 0;
public static void main(String[] args) {
for (int i = 101; i < 200; i++) {
boolean b = true; // 假设当前数是素数
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
b = false; // 如果发现因子,标记为非素数
break;
}
}
if (b) {
count++;
System.out.print(i + "");
}
}
System.out.println("\n共找到" + count + "个素数");
}
```
3. **水仙花数**:
水仙花数(Narcissistic Number)是指一个三位数,它的每一位数字的立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。此问题中,程序遍历101到999,检查每个数是否为水仙花数。方法是将数字拆分为三位,分别计算它们的立方和,如果等于原始数,则是水仙花数。
```java
public static void main(String[] args) {
for (int num = 101; num < 1000; num++) {
ThirdNarcissusNum tnn = new ThirdNarcissusNum();
tnn.f(num);
}
}
public void f(int m) {
int b, bb, bbb;
// 拆分数字
b = m / 100;
bb = (m / 10) % 10;
bbb = m % 10;
// 计算立方和
int sum = b * b * b + bb * bb * bb + bbb * bbb * bbb;
// 检查是否为水仙花数
if (sum == m) {
System.out.println(m + " 是水仙花数");
}
}
```
这些Java算法示例涵盖了基础的数学问题,如递推序列、素数判断和数字特性分析,对于学习和理解算法有很好的帮助。通过实践这些经典问题,可以加深对Java语言特性和控制结构的理解,同时提高解决问题的能力。
2023-09-01 上传
2023-08-11 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-11-10 上传
2023-09-11 上传
天_灏
- 粉丝: 0
- 资源: 6
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全