JAVA算法题解:兔子问题、素数判断与水仙花数

5星 · 超过95%的资源 需积分: 9 8 下载量 17 浏览量 更新于2024-07-30 收藏 285KB DOC 举报
一个三位数,它的每个位上的数字的立方和等于它本身"。例如:153是一个"水仙花数",因为1^3 + 5^3 + 3^3 = 153。 1. 程序分析:可以通过循环遍历100到999之间的所有三位数,然后逐个计算每个数的各位数字的立方和来判断是否为水仙花数。 ```java public class Exp3 { public static void main(String[] args) { for (int i = 100; i <= 999; i++) { if (isNarcissistic(i)) { System.out.println(i); } } } public static boolean isNarcissistic(int num) { int sum = 0, digit; while (num != 0) { digit = num % 10; sum += Math.pow(digit, 3); num /= 10; } return sum == num; } } ``` 以上程序3中,`isNarcissistic`方法用于检查输入的数字是否为水仙花数,通过取模运算得到个位、十位和百位数字,然后计算它们的立方和,最后比较和原数是否相等。 这些Java编程题目涉及了基础的算法知识和数据结构,包括: 1. **斐波那契数列**:在程序1中,兔子问题的解决方案是通过递归实现斐波那契数列。斐波那契数列的每个数都是前两个数的和,其特点是初始值为1(或0和1,取决于不同的定义),递归公式为F(n) = F(n-1) + F(n-2)。这里展示了两种递归实现方式,一种是直接在主类中,另一种是将方法封装到单独的类中。 2. **素数判断**:程序2展示了如何判断一个数是否为素数。基本思路是从2开始到该数的平方根,如果存在因子则不是素数,否则是素数。这里的`isZhishu`方法实现了这个逻辑,通过循环遍历并检查余数来判断。 3. **水仙花数**:程序3探讨的是如何找出所有的水仙花数。通过遍历100到999,计算每个数的每位数字立方和,如果等于原数,则输出该数。这里通过`isNarcissistic`方法实现了水仙花数的判断逻辑。 这些题目对于初学者来说是非常好的练习,可以帮助他们理解递归、循环以及基本的数学概念在编程中的应用。同时,它们也是对算法思维和代码效率优化的初步训练。通过解决这些问题,程序员可以提升自己的问题解决能力和编程技能。