"这些是经典的算法试题,涵盖了不同的难度级别,适合作为学习算法的练习材料。"
在这些试题中,我们可以看到四个不同的问题,分别涉及斐波那契数列、质数判断、水仙花数和分解质因数。
1. 斐波那契数列:这段代码实现了一个计算斐波那契数列的功能。斐波那契数列是一个序列,其中每个数字是前两个数字的和。在这里,程序打印出从第三项到指定数目的斐波那契数。这展示了循环结构和简单的数学运算在编程中的应用。
```java
// 代码输出斐波那契数列的前24项
for(int i=3; i<=M; i++){
f=f2;
f2=f1+f2;
f1=f;
System.out.println(i + "的斐波那契数:" + f2);
}
```
2. 质数判断:这段代码用于找出101到200之间所有的质数。它通过检查一个数是否能被小于等于其平方根的任何数整除来确定。如果不能,那么这个数就是质数。这个方法减少了检查的次数,提高了效率。
```java
// 遍历101-200的偶数,检查并打印质数
for(int j=2; j<=Math.sqrt(i); j++){
if(i%j==0){b=false;break;}
else{b=true;}
}
if(b==true){count++;System.out.println(i);}
```
3. 水仙花数:水仙花数是指一个三位数,其各位数字立方和等于该数本身。这段代码遍历101到999之间的数,寻找这样的数。
```java
// 计算每个数的各位立方和,判断是否为水仙花数
if((b3*b3*b3+b2*b2*b2+b1*b1*b1)==m){
System.out.println(m + "是一个水仙花数");
}
```
4. 分解质因数:这个题目要求找到一个数的所有质因数。这里采用了递归的方法,首先检查n是否等于2的倍数,然后递归处理n除以2后的结果,直到n变为1,表示所有质因数都已找到。
```java
// 分解质因数的递归函数
public static void factorize(int n, int k, List<Integer> factors){
// ... 实现递归逻辑
}
// 主函数调用
factorize(n, 2, new ArrayList<>());
```
这些题目覆盖了基础的编程概念,如循环、条件语句、数学运算以及递归,同时涉及到一些高级的算法思想,如优化质数检测和数论知识。通过解决这些问题,可以提高对算法的理解和编程技巧。