详解求水仙花数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语言代码的相关知识。