求水仙花数c语言代码怎么写

详解求水仙花数c语言代码

1. 什么是水仙花数

水仙花数,也被称为阿姆斯特朗数,指的是一个三位数各个数位上数字的立方和等于该数本身的数。例如,153是一个水仙花数,因为:1^3 + 5^3 + 3^3 = 153。

2. 水仙花数的计算方法

2.1 使用for循环

我们可以使用for循环来枚举所有的三位数,然后判断是否为水仙花数。具体代码如下:

#include<stdio.h>

int main() {

int i, j, k;

for (i = 1; i <= 9; i++) {

for (j = 0; j <= 9; j++) {

for (k = 0; k <= 9; k++) {

int num = i * 100 + j * 10 + k;

int sum = i * i * i + j * j * j + k * k * k;

if (num == sum) {

printf("%d\n", num);

}

}

}

}

return 0;

}

该代码先用三个for循环枚举所有的三位数,然后分别计算该数的各数位上数字的立方和,并与该数本身进行比较,如果相等就输出结果。

2.2 使用while循环

我们也可以使用while循环来实现水仙花数的计算。具体代码如下:

#include<stdio.h>

int main() {

int num = 100;

while (num <= 999) {

int i = num / 100;

int j = (num % 100) / 10;

int k = num % 10;

int sum = i * i * i + j * j * j + k * k * k;

if (num == sum) {

printf("%d\n", num);

}

num++;

}

return 0;

}

该代码使用while循环枚举所有的三位数,并且使用取模运算和整除运算找出该数的各个数位上的数字。然后计算该数的各个数位上数字的立方和,并与该数本身进行比较,如果相等就输出结果。

2.3 代码优化

我们可以进行代码优化来减少计算量。具体优化方法为:

我们只需要枚举100到999之间的数即可,否则会有重复计算。

我们可以使用pow函数计算三次方,避免重复计算。

优化后的代码如下:

#include<stdio.h>

#include<math.h>

int main() {

int num;

for (num = 100; num <= 999; num++) {

int i = num / 100;

int j = (num % 100) / 10;

int k = num % 10;

int sum = pow(i, 3) + pow(j, 3) + pow(k, 3);

if (num == sum) {

printf("%d\n", num);

}

}

return 0;

}

3. 总结

本文介绍了如何使用C语言计算水仙花数,以及使用for循环和while循环分别实现水仙花数的计算。并且进行了代码优化,减少了计算量。通过本文的学习,相信读者已经掌握了求水仙花数C语言代码的相关知识。

后端开发标签