目录
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
C 语言实现
#include <stdio.h>
int main() {
int i, x, y, z;
// 查找并打印三位数的水仙花数
for (i = 100; i < 1000; i++) {
x = i % 10; // 个位数
y = (i / 10) % 10; // 十位数
z = i / 100; // 百位数
// 判断是否为水仙花数
if (i == (x * x * x + y * y * y + z * z * z)) {
printf("%d\n", i); // 输出水仙花数
}
}
return 0; // 返回0表示程序正常结束
}
代码说明:
- 头文件:包含标准输入输出库
#include <stdio.h>
。 - 主函数:
int main()
是程序的入口点。 - 循环结构:
- 使用
for (i = 100; i < 1000; i++)
遍历所有三位数。
- 使用
- 提取数字:
x = i % 10;
获取个位数。y = (i / 10) % 10;
获取十位数。z = i / 100;
获取百位数。
- 判断水仙花数:使用
if (i == (x * x * x + y * y * y + z * z * z))
判断当前数字是否等于其各位数字的立方和。 - 输出:如果条件成立,使用
printf("%d\n", i);
输出该数字。 - 返回值:
return 0;
表示程序正常结束。
这段代码是有效的 C 语言实现,能够正确查找并打印所有三位数的水仙花数。
Python 实现
# 查找并打印三位数的水仙花数
for i in range(100, 1000):
x = i % 10 # 个位数
y = (i // 10) % 10 # 十位数
z = i // 100 # 百位数
# 判断是否为水仙花数
if i == (x**3 + y**3 + z**3):
print(i)
代码说明:
- 循环:使用
for i in range(100, 1000)
遍历所有三位数。 - 提取数字:
x = i % 10
获取个位数。y = (i // 10) % 10
获取十位数。z = i // 100
获取百位数。
- 判断水仙花数:使用
if i == (x**3 + y**3 + z**3)
判断当前数字是否等于其各位数字的立方和。 - 输出:如果条件成立,使用
print(i)
输出该数字。
这种实现方式简洁明了,充分利用了 Python 的语法特性。
Java 实现
public class NarcissisticNumbers {
public static void main(String[] args) {
// 查找并打印三位数的水仙花数
for (int i = 100; i < 1000; i++) {
int x = i % 10; // 个位数
int y = (i / 10) % 10; // 十位数
int z = i / 100; // 百位数
// 判断是否为水仙花数
if (i == (x * x * x + y * y * y + z * z * z)) {
System.out.println(i);
}
}
}
}
代码说明:
- 类定义:定义一个名为
NarcissisticNumbers
的公共类。 - 主方法:
public static void main(String[] args)
是程序的入口点。 - 循环:使用
for (int i = 100; i < 1000; i++)
遍历所有三位数。 - 提取数字:
int x = i % 10;
获取个位数。int y = (i / 10) % 10;
获取十位数。int z = i / 100;
获取百位数。
- 判断水仙花数:使用
if (i == (x * x * x + y * y * y + z * z * z))
判断当前数字是否等于其各位数字的立方和。 - 输出:如果条件成立,使用
System.out.println(i);
输出该数字。
这种实现方式清晰易懂,符合 Java 的编程风格。
Js 实现
// 查找并打印三位数的水仙花数
for (let i = 100; i < 1000; i++) {
let x = i % 10; // 个位数
let y = Math.floor(i / 10) % 10; // 十位数
let z = Math.floor(i / 100); // 百位数
// 判断是否为水仙花数
if (i === (x ** 3 + y ** 3 + z ** 3)) {
console.log(i);
}
}
代码说明:
- 循环:使用
for (let i = 100; i < 1000; i++)
遍历所有三位数。 - 提取数字:
let x = i % 10;
获取个位数。let y = Math.floor(i / 10) % 10;
获取十位数,使用Math.floor()
确保结果为整数。let z = Math.floor(i / 100);
获取百位数。
- 判断水仙花数:使用
if (i === (x ** 3 + y ** 3 + z ** 3))
判断当前数字是否等于其各位数字的立方和。 - 输出:如果条件成立,使用
console.log(i);
输出该数字。
这种实现方式简洁明了,充分利用了 JavaScript 的语法特性。