[C] 纯文本查看 复制代码 #include <stdio.h>
int N(int x)
{
// 限制在三位数
if (x < 100 || x > 999) return -1;
// 分离数位(例如 153)
// 这个过程也可以用循环实现,不过这里为了看得清楚一些先不放进循环
int digits[3];
digits[0] = x / 100; // 百位(例如 1)
x = x % 100; // 余数(例如 53)
digits[1] = x / 10; // 十位(例如 5)
x = x % 10; // 余数(例如 3)
digits[2] = x / 1; // 个位(例如 3)
// 验证水仙花
// 这个过程也可以用循环实现,不过这里为了看得清楚一些先不放进循环
int sum_left =
digits[0] * digits[0] * digits[0] +
digits[1] * digits[1] * digits[1] +
digits[2] * digits[2] * digits[2];
int sum_right =
digits[0] * 100 +
digits[1] * 10 +
digits[2] * 1;
if (sum_left == sum_right) return 1;
return 0;
}
int main()
{
// 遍历
for (int i=100; i<=999; i++)
{
if (N(i)) printf("%d\n", i);
}
return 0;
}
输出结果:
[Plain Text] 纯文本查看 复制代码 153
370
371
407 |