python-打印一定范围内的水仙花数

打印一定范围内的水仙花数:水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。(10分)

题目内容:

水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。

例如:153是一个“水仙花数”,因为 153 是个 3位数,而1**3+5**3+3**3==153。

输入一个正整数max,输出100到max之间的所有水仙花数(包括max)。

 

输入格式:

共一行,为一个正整数。

 

输出格式:

若干行,从小到大输出水仙花数,一行为一个数。

 

输入样例:

2500

 

输出样例:

153

370

371

407

1634

时间限制:1000ms内存限制:32000kb

程序:

n = int(input())
for i in range(152, n+1):
    l=len(str(i))
    result = sum(map(lambda x: int(x)**l, str(i)))
    if result == i:
        print(i)

 

### 回答1: 这是一段打印所有水仙花数Python 代码: ``` for num in range(100, 1000): sum = 0 temp = num while temp > 0: digit = temp % 10 sum += digit ** 3 temp //= 10 if num == sum: print(num) ``` 该代码使用了 for 循环,并在循环内部使用了 while 循环。它首先将变量 `num` 初始化为从 100 到 1000 中的每一个数字,然后使用 while 循环逐个分离出这个数字的各个位数,并将这些位数的立方值加起来。最后,如果 `sum` 的值等于原始的 `num`,则该数字为水仙花数,代码会打印它。 ### 回答2: 水仙花数是指一个三位数,它的每个位上的数字的立方和等于自身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。 下面是用Python编写的打印所有水仙花数的程序: ```python for num in range(100, 1000): # 获取百位、十位和个位的数字 digit_1 = num // 100 digit_2 = (num // 10) % 10 digit_3 = num % 10 # 计算立方和 sum_of_cubes = digit_1 ** 3 + digit_2 ** 3 + digit_3 ** 3 # 判断是否为水仙花数 if num == sum_of_cubes: print(num) ``` 程序中使用了一个for循环,遍历所有三位数(100到999)。对于每一个数字,我们通过除法和取余运算符来获取它的百位、十位和个位的数字。然后,我们计算这三个数字的立方和,如果等于原来的数字,就打印出来。 运行这段代码会输出以下水仙花数: 153 370 371 407 注意:根据题目要求,这段程序只会打印出三位数的水仙花数,如果需要打印更高位数的水仙花数,可以修改代码中的范围。 ### 回答3: 水仙花数是指一个n位数(n≥3),其各个位上的数字的n次幂之和等于它本身。下面是用Python编写的打印所有水仙花数的程序: ```python def find_narcissistic_numbers(): for num in range(100, 1000): # 获取百位、十位、个位数字 digit_1 = num // 100 digit_2 = (num // 10) % 10 digit_3 = num % 10 # 判断是否为水仙花数 if num == digit_1**3 + digit_2**3 + digit_3**3: print(num) find_narcissistic_numbers() ``` 以上程序定义了一个`find_narcissistic_numbers`函数,在函数中使用`range`函数生成从100到999的所有三位数。然后通过整数除法和取余运算符获取每个数字的百位、十位和个位数字。接下来,使用if语句判断条件是否成立,即判断该数是否为水仙花数。如果是,就打印出来。最后,调用`find_narcissistic_numbers`函数,即可打印出所有的水仙花数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suxiaorui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值