水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身(例如1**3+5**3+3**3=153),输出所有3位的水仙花数。多种程序写法
时间: 2023-05-23 09:02:57 浏览: 94
CSDN开发的C知道回答:
以下是几种不同的程序实现方式:
1. 使用for循环遍历每个3位数,并分离每个数字,判断是否满足水仙花数的定义:
#include <stdio.h>
#include <math.h>
int main() {
int i, num, digit, sum;
for (i = 100; i < 1000; i++) {
num = i;
sum = 0;
while (num > 0) {
digit = num % 10;
sum += pow(digit, 3);
num /= 10;
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
2. 使用嵌套的for循环,遍历所有可能的组合:
#include <stdio.h>
#include <math.h>
int main() {
int i, j, k, num;
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
num = i * 100 + j * 10 + k;
if (num == pow(i, 3) + pow(j, 3) + pow(k, 3)) {
printf("%d\n", num);
}
}
}
}
return 0;
}
3. 使用递归函数,生成所有可能的3位数并判断是否满足:
#include <stdio.h>
#include <math.h>
void narcissistic(int n, int i, int sum) {
if (i == 0) {
if (sum == n) {
printf("%d\n", n);
}
return;
}
int j;
for (j = 0; j <= 9; j++) {
narcissistic(n, i - 1, sum + pow(j, 3));
}
}
int main() {
int i;
for (i = 100; i < 1000; i++) {
narcissistic(i, 3, 0);
}
return 0;
}
对于“lua closure factory 完整代码”和“中文加密”的问题,我都可以回答。请注明您需要哪一个问题的答案。
阅读全文