编写程序,求200至999之间的水仙花数。水仙花数是一个3位数
时间: 2023-10-31 11:11:20 浏览: 40
,它的每个位上的数字的立方和等于它本身。
解法一:
```python
for num in range(200, 1000):
a = num // 100 # 百位数
b = num % 100 // 10 # 十位数
c = num % 10 # 个位数
if num == a ** 3 + b ** 3 + c ** 3:
print(num)
```
解法二:
```python
for a in range(2, 10):
for b in range(0, 10):
for c in range(0, 10):
num = a * 100 + b * 10 + c
if num == a ** 3 + b ** 3 + c ** 3:
print(num)
```
两种解法的输出结果相同,为:
```
216
370
371
407
```
相关问题
用c语言编写程序 求100到999之间所有的水仙花数
好的,以下是求100到999之间所有的水仙花数的 C 语言代码:
#include <stdio.h>
int main() {
int i, j, k, n;
for (n = 100; n <= 999; n++) {
i = n / 100; // 百位数
j = n % 100 / 10; // 十位数
k = n % 10; // 个位数
if (n == i * i * i + j * j * j + k * k * k) {
printf("%d ", n);
}
}
return 0;
}
希望能帮到您!
用c语言,编写一个求水仙花数的函数,求100到999之间的全部水仙花数。
好的,以下是代码实现:
```c
#include <stdio.h>
// 求一个数的位数
int getDigits(int num) {
int digits = 0;
while (num != 0) {
digits++;
num /= 10;
}
return digits;
}
// 求一个数的各位数字的立方和
int getCubeSum(int num) {
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += (digit * digit * digit);
num /= 10;
}
return sum;
}
// 判断一个数是否为水仙花数
int isNarcissistic(int num) {
int digits = getDigits(num);
int cubeSum = getCubeSum(num);
return num == cubeSum;
}
// 求100到999之间的全部水仙花数
void printNarcissisticNumbers() {
for (int i = 100; i <= 999; i++) {
if (isNarcissistic(i)) {
printf("%d ", i);
}
}
}
int main() {
printNarcissisticNumbers();
return 0;
}
```
解释一下:
1. `getDigits` 函数用于求一个数的位数,采用了除以 10 的方法逐个地取出每一位数字,直到这个数变成 0。
2. `getCubeSum` 函数用于求一个数的各位数字的立方和,同样也是采用了除以 10 的方法逐个地取出每一位数字,并累加起来。
3. `isNarcissistic` 函数用于判断一个数是否为水仙花数,只需要将这个数和它的各位数字的立方和进行比较即可。
4. `printNarcissisticNumbers` 函数则是用于求100到999之间的全部水仙花数,只需要从 100 开始循环到 999,依次判断每个数是否为水仙花数,如果是就打印出来。
最后在 `main` 函数中调用 `printNarcissisticNumbers` 函数即可。