输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数,所谓的“水仙花数”。例如153的各位数字的立方和是 13+53+33=153。用C回答
时间: 2024-03-22 07:39:39 浏览: 28
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int m, n;
scanf("%d%d", &m, &n);
for (int i = m; i <= n; i++) {
int num = i;
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum += pow(digit, 3);
num /= 10;
}
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
```
在这个程序中,我们先输入两个正整数 m 和 n,然后用 for 循环遍历 m 到 n 之间的所有数。对于每个数,我们计算它各位数字的立方和,如果等于它本身,则输出该数。这样就能输出所有满足条件的“水仙花数”了。
相关问题
用c语言编写程序:输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数
好的,以下是用C语言编写的程序,可以实现输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。
```c
#include <stdio.h>
int main() {
int m, n;
printf("请输入两个正整数m和n(1<=m, n<=1000):\n");
scanf("%d %d", &m, &n);
for (int i = m; i <= n; i++) {
int num = i, sum = 0;
while (num > 0) {
int digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
程序中的思路是:遍历m到n之间的所有整数,对于每个整数,将它的各位数字的立方和累加,如果等于它本身,则输出该数。
输入两个正整数m和n(m>=100,n<1000),输出m和n之间所有满足各位数字的立方和等于他本身的数
以下是一个 Python 的实现:
```python
m, n = 100, 999
for i in range(m, n+1):
digits = [int(d) for d in str(i)]
sum_of_cubes = sum([d**3 for d in digits])
if sum_of_cubes == i:
print(i)
```
输出:
```
153
370
371
407
```
这些数分别满足:
- $153=1^3+5^3+3^3$
- $370=3^3+7^3+0^3$
- $371=3^3+7^3+1^3$
- $407=4^3+0^3+7^3$