Java求四位数所有的水仙花数
什么是水仙花数?
水仙花数(Narcissistic Number),又称阿姆斯壮数,是指一个 n 位数,其各位数字的 n 次方和等于它本身。四位数的水仙花数则是四位数字的特殊情况。其中,四位数的每个数位的四次方和必须等于这个数本身。
例如,1634 是水仙花数,因为 ( 1^4 + 6^4 + 3^4 + 4^4 = 1634 )。
水仙花数程序实现
接下来,我们将使用 Java 编写一个程序来找出所有的四位水仙花数。程序思路如下:
- 使用循环遍历所有的四位数(1000到9999)。
- 对于每个数字,分离出其各个数字的位。
- 计算每个数字的四次方和。
- 检查该和是否与原数相等。
Java代码示例
public class NarcissisticNumbers {
public static void main(String[] args) {
System.out.println("四位水仙花数有:");
for (int i = 1000; i < 10000; i++) {
int sum = 0;
int num = i;
// 分离数字并计算四次方和
while (num != 0) {
int digit = num % 10;
sum += Math.pow(digit, 4);
num /= 10;
}
// 检查是否为水仙花数
if (sum == i) {
System.out.println(i);
}
}
}
}
代码解析
for
循环遍历从 1000 到 9999 的所有数字。while
循环用于将数字分离成单独的位数,并计算每位数的四次方。- 若四次方和等于原数,则输出该四位数。
序列图
以下是程序执行流程的序列图,展示了计算水仙花数的过程:
sequenceDiagram
participant User
participant Program
User->>Program: 运行程序
Program->>Program: 遍历从1000到9999的数字
alt 水仙花数
Program->>Program: 分离数字并计算和
Program-->>User: 输出水仙花数
else 非水仙花数
Program->>Program: 继续遍历
end
关系图
这是程序中涉及的关系图,展示了数字、算法与结果之间的关系:
erDiagram
WATER_FLOW {
int number
int sum
}
ALGORITHM {
string process
}
OUTPUT {
int narcissistic_number
}
WATER_FLOW ||--o| ALGORITHM : generates
ALGORITHM ||--o| OUTPUT : results in
结论
通过上述代码,我们不仅能得到所有的四位水仙花数,还能理解其背后的运算过程与逻辑结构。水仙花数是数字灵性的重要体现,编程不仅是解决问题的工具,也是对数学美的追求。通过不断实践,我们可以在计算中发现更多的乐趣以及普遍的规律。这就是探索数字世界的魅力所在。