现在要求输入正整数m和n(100<=m,n<1000),输出m~n之间的所有水仙花数。
时间: 2024-06-13 14:04:53 浏览: 116
在给定的范围内,如果一个三位数的各位数字的立方和等于其本身,则该数为水仙花数。可以使用循环遍历m到n之间的所有三位数,判断是否为水仙花数,如果是则输出。如果范围内不存在水仙花数,则输出no。
代码实现如下:
```c
#include <stdio.h>
#include <math.h>
int main() {
int m, n;
scanf("%d %d", &m, &n);
int flag = 0;
for (int i = m; i <= n; i++) {
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if (i == (a * a * a + b * b * b + c * c * c)) {
printf("%d ", i);
flag = 1;
}
}
if (flag == 0) {
printf("no");
}
return 0;
}
```
相关问题
使用函数输出水仙花数:输入两个正整数m和n,100<=m<n<=999
题目描述:水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。输入两个正整数m和n(100≤m≤n≤10000),输出开区间(m,n)内所有的水仙花数。本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间内所有的水仙花数。要求定义并调用函数narcissistic(number)判断number是否为水仙花数,是则返回1,否则返回0。定义并调用函数print_n(m,n)按从小到大的顺序输出区间(m,n)内所有的水仙花数。
```c
#include <stdio.h>
#include <math.h>
int narcissistic(int num) {
int num_ = num, count = 0, sum = 0, ev;
int num__ = num;
do {
count++;
num /= 10;
} while (num);
do {
ev = num_ % 10;
sum += pow(ev, count);
num_ /= 10;
} while (num_);
if (sum == num__) return 1;
else return 0;
}
void print_n(int m, int n) {
int i;
for (i = m + 1; i < n; i++) {
if (narcissistic(i)) {
printf("%d\n", i);
}
}
}
int main() {
int m, n;
scanf("%d%d", &m, &n);
print_n(m, n);
return 0;
}
```
输入正整数m和n(1<=m,n<=1000),输出m~n之间的所有水仙花数,水仙花数是指各位数字的立方和等于其自 身的数。要求定义并调用函数is(number)判断number的各位数字之立方和是否等于其自身
好的,这是一个关于水仙花数的问题。下面是代码实现:
```python
def is(number):
"""
判断number的各位数字之立方和是否等于其自身
"""
sum = 0
temp = number
while temp > 0:
digit = temp % 10
sum += digit ** 3
temp //= 10
if sum == number:
return True
else:
return False
m, n = map(int, input().split())
for i in range(m, n+1):
if is(i):
print(i, end=' ')
```
请问还有其他问题吗?
阅读全文