使用 C 语言编写了一个计算水仙花数的小程序

内容分享2小时前发布
0 2 0

最近阅读《啊哈C语言!》,入门 C 语言。这本书是面向小学生的,读起来没有门槛,学习曲线平缓的像是湖面。

里面有个计算水仙花数的小程序,比较有趣。

使用 C 语言编写了一个计算水仙花数的小程序

水仙花数(Narcissistic Number)是一种特殊的三位整数,其中百分位、十分位和个位的数字立方和,等于它自身。所以水仙花数又被称作“自恋数”。

153 就是一个水仙花数,它让如下等式成立:

使用 C 语言编写了一个计算水仙花数的小程序

用 C 语言查找所有的水仙花数,代码可以这么写:

#include <stdio.h>

int cube(n) {
  return n * n * n;
}

int cube_sum(a, b, c) {
  return cube(a) + cube(b) + cube(c);
}

int digit(a, b, c) {
  return a * 100 + b * 10 + c;
}

int main() {
  int a, b, c;
  for (a = 1; a <= 9; a++) {
    for (b = 0; b <= 9; b++) {
      for (c = 0; c <= 9; c++) {
        if (cube_sum(a, b, c) == digit(a, b, c)) {
          printf("%d%d%d ", a, b, c);
        }
      }
    }
  }
  printf("
");
  return 0;
}

在 macOS 或 Linux 系统,如果安装了 C 编译器,可以执行如下命令编译代码(假设 C 源文件名是 narcissistic.c):

make narcissistic

C 语言在运行这些纯数学计算时,真是挺合适的。编译速度快,生成的可执行文件也很小,只有 48K。

使用 C 语言编写了一个计算水仙花数的小程序

水仙花数小程序

END

© 版权声明

相关文章

2 条评论

  • 头像
    舒儿 读者

    有没有大于三位数的水仙花数?如果有怎么编程?位数更多呢?

    无记录
    回复
  • 头像
    老陈故事会 读者

    一样的,难点在于把每位数分离出来

    无记录
    回复