Java算法实践:斐波那契数列、素数判断与水仙花数
需积分: 9 100 浏览量
更新于2024-09-12
收藏 49KB TXT 举报
本文将介绍三个Java编程中的经典算法问题,这些问题涵盖了斐波那契数列、寻找质数以及判断水仙花数。通过理解和实践这些算法,可以加深对Java编程和基础算法的理解。
1. 斐波那契数列:
斐波那契数列是一个非常经典的数列,它的定义是:第一项和第二项都是1,之后的每一项都是前两项之和。在Java代码中,我们可以使用循环结构来计算斐波那契数列的前15个月的兔子数量。这段代码展示了如何初始化两个变量f1和f2分别代表斐波那契序列的前两项,然后通过循环计算后面的项并打印结果。这里的算法时间复杂度是O(n),其中n为斐波那契数列的项数。
```java
public class FirstRabbit {
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之间的所有质数是另一个常见的算法问题。这段代码首先定义了一个变量count来记录找到的质数数量,然后遍历101到200的整数,对于每个数,通过判断它是否能被2到其平方根之间的任何数整除来确定是否为质数。如果不能被整除,就将该数输出并增加计数。这个算法的时间复杂度大约是O(n * sqrt(n)),因为需要遍历n个数,并对每个数进行sqrt(n)次除法操作。
```java
public class SecondPrimeNumber {
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. 水仙花数( narcissus number):
水仙花数是指一个三位数,其各位数字立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。这段代码通过遍历101到999的整数,对每个数进行转换并计算其各位数字的立方和,如果相等则输出该数。这个算法的时间复杂度为O(n),因为只需要遍历n个数。
```java
public class ThirdNarcissusNum {
static int b, bb, bbb;
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) {
bbb = m / 100;
bb = (m % 100) / 10;
b = m % 10;
if (bbb * bbb * bbb + bb * bb * bb + b * b * b == m) {
System.out.println("水仙花数:" + m);
}
}
}
```
以上三个算法实例展示了在Java中如何处理基础的数学问题。通过理解和实践这些代码,开发者可以提升对Java语言特性和算法应用的掌握。同时,它们也为解决更复杂的编程问题奠定了基础。
2023-09-01 上传
2023-08-11 上传
2014-07-05 上传
2011-05-16 上传
2013-01-27 上传
2009-10-23 上传
_强哥_
- 粉丝: 0
- 资源: 7
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能