经典算法题解析:斐波那契数列、质数判断、水仙花数与因数分解

需积分: 10 4 下载量 176 浏览量 更新于2024-09-07 收藏 35KB TXT 举报
"这些是经典的算法试题,涵盖了不同的难度级别,适合作为学习算法的练习材料。" 在这些试题中,我们可以看到四个不同的问题,分别涉及斐波那契数列、质数判断、水仙花数和分解质因数。 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<>()); ``` 这些题目覆盖了基础的编程概念,如循环、条件语句、数学运算以及递归,同时涉及到一些高级的算法思想,如优化质数检测和数论知识。通过解决这些问题,可以提高对算法的理解和编程技巧。