水仙花数-多语言

目录

C 语言实现

Python 实现

Java 实现

Js 实现


题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如: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表示程序正常结束
}

代码说明:

  1. 头文件:包含标准输入输出库 #include <stdio.h>
  2. 主函数int main() 是程序的入口点。
  3. 循环结构
    • 使用 for (i = 100; i < 1000; i++) 遍历所有三位数。
  4. 提取数字
    • x = i % 10; 获取个位数。
    • y = (i / 10) % 10; 获取十位数。
    • z = i / 100; 获取百位数。
  5. 判断水仙花数:使用 if (i == (x * x * x + y * y * y + z * z * z)) 判断当前数字是否等于其各位数字的立方和。
  6. 输出:如果条件成立,使用 printf("%d\n", i); 输出该数字。
  7. 返回值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)

代码说明:

  1. 循环:使用 for i in range(100, 1000) 遍历所有三位数。
  2. 提取数字
    • x = i % 10 获取个位数。
    • y = (i // 10) % 10 获取十位数。
    • z = i // 100 获取百位数。
  3. 判断水仙花数:使用 if i == (x**3 + y**3 + z**3) 判断当前数字是否等于其各位数字的立方和。
  4. 输出:如果条件成立,使用 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);
            }
        }
    }
}

代码说明:

  1. 类定义:定义一个名为 NarcissisticNumbers 的公共类。
  2. 主方法public static void main(String[] args) 是程序的入口点。
  3. 循环:使用 for (int i = 100; i < 1000; i++) 遍历所有三位数。
  4. 提取数字
    • int x = i % 10; 获取个位数。
    • int y = (i / 10) % 10; 获取十位数。
    • int z = i / 100; 获取百位数。
  5. 判断水仙花数:使用 if (i == (x * x * x + y * y * y + z * z * z)) 判断当前数字是否等于其各位数字的立方和。
  6. 输出:如果条件成立,使用 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);
    }
}

代码说明:

  1. 循环:使用 for (let i = 100; i < 1000; i++) 遍历所有三位数。
  2. 提取数字
    • let x = i % 10; 获取个位数。
    • let y = Math.floor(i / 10) % 10; 获取十位数,使用 Math.floor() 确保结果为整数。
    • let z = Math.floor(i / 100); 获取百位数。
  3. 判断水仙花数:使用 if (i === (x ** 3 + y ** 3 + z ** 3)) 判断当前数字是否等于其各位数字的立方和。
  4. 输出:如果条件成立,使用 console.log(i); 输出该数字。

这种实现方式简洁明了,充分利用了 JavaScript 的语法特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赔罪

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值