输入两个正整数m和n{100<=m,n<1000},输出m到n之间的所有的水仙花数,若该区间没有一个水仙花数,则输出no。水仙花数是指一个三位数,其各位数字的立方和等于它本身。要求定义并调用函数is(
时间: 2023-06-05 17:47:33 浏览: 173
先根据题意,输入两个正整数m和n,其中100<=m,n<1000。然后输出m到n之间的所有水仙花数,如果该区间没有一个水仙花数,则输出no。水仙花数是指一个三位数,其每个位上的数字的立方和等于该数本身。
可以使用一个函数is()来判断一个数是否是水仙花数。遍历m到n之间的所有数,对于每一个数,调用is()函数进行判断,如果是水仙花数,则保存到一个列表中。遍历完之后,判断列表是否为空,如果为空则输出no,否则输出列表中的所有水仙花数。
代码如下:
def is(n):
i = n
s = 0
while i > 0:
s += (i%10) ** 3
i //= 10
return s == n
m, n = map(int, input().split())
list = []
for i in range(m, n+1):
if is(i):
list.append(i)
if len(list) == 0:
print("no")
else:
for i in list:
print(i, end=" ")
相关问题
使用函数输出水仙花数:输入两个正整数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(100<=m<=n<1000),统计并输出m和n之间的水仙花数。要求,自定义并调用函数int flower(int num)判断其是否为水仙花数。输出格式要求:从小到大排列在一行内输出,之间用一个空格隔开;当m和n之间无水仙花数,则输出为“No”。
```python
def flower(num):
# 计算num的每一位数字
a = num // 100
b = num // 10 % 10
c = num % 10
# 判断是否为水仙花数
if num == a ** 3 + b ** 3 + c ** 3:
return True
else:
return False
m, n = map(int, input().split())
flag = False # 标记是否有水仙花数
for i in range(m, n+1):
if flower(i):
print(i, end=' ')
flag = True
if not flag:
print('No')
```
注:题目中所谓的水仙花数指的是一个三位数,其各位数字的立方和等于该数本身,例如153 = 1^3 + 5^3 + 3^3。
阅读全文