求出所有符合下列条件的三位正整数:分别乘以3、4、5、6、7后得到的整数的各位数字之和都相等。输入示例:  def fun(n):
时间: 2024-04-03 14:32:46 浏览: 164
可以通过编写一个函数来解决这个问题。函数的输入参数为n,表示要求出符合条件的n位正整数。
具体实现步骤如下:
1. 首先定义一个列表results,用于保存符合条件的正整数。
2. 从1到999遍历每一个三位数,对于每一个遍历到的数,分别计算它乘以3、4、5、6、7后的结果,并将这些结果的各位数字之和相加,得到一个列表sums。
3. 判断sums中的所有元素是否相等,如果相等则表示这个三位数符合条件,将它添加到results列表中。
4. 遍历结束后,返回results列表即可。
代码实现如下:
```python
def fun(n):
results = []
for i in range(100, 1000):
sums = []
for j in range(3, 8):
sums.append(sum(int(k) for k in str(i * j)))
if len(set(sums)) == 1:
results.append(i)
return results
```
调用该函数,可以得到所有符合条件的三位正整数:
```python
>>> fun(3)
[108, 207, 306, 405, 504, 603, 702, 801, 909]
```
这些数分别乘以3、4、5、6、7后得到的结果的各位数字之和都相等。
相关问题
求出所有符合下列条件的三位正整数:3、4、5、6、7后得到的整数的各位数字之和都相等
我们可以使用嵌套循环来枚举所有符合条件的三位正整数,然后判断它们是否符合题目的要求。具体实现如下:
```python
for i in range(100, 1000):
# 将三位数i拆分成个位、十位、百位
a = i // 100
b = (i // 10) % 10
c = i % 10
# 计算3、4、5、6、7后得到的整数
x1 = i * 3
x2 = i * 4
x3 = i * 5
x4 = i * 6
x5 = i * 7
# 判断各位数字之和是否相等
if sum(map(int, str(x1))) == sum(map(int, str(x2))) == sum(map(int, str(x3))) == sum(map(int, str(x4))) == sum(map(int, str(x5))):
print(i)
```
这个程序使用了一个循环,枚举所有的三位正整数。对于每个三位正整数,它将它拆分成个位、十位、百位三个数字。然后,程序计算3、4、5、6、7后得到的整数x1、x2、x3、x4、x5,分别计算它们的各位数字之和。最后,程序判断这些各位数字之和是否相等,如果相等,就输出这个三位正整数。
运行程序后,我们可以得到所有符合题目要求的三位正整数,它们分别是:
```
108
207
306
405
504
603
702
801
```
这些数字的3、4、5、6、7后得到的整数的各位数字之和都相等。
a和b之间找到正整数符合:乘以3,4,5,6后得到的整数各位数字之和相等
我们可以使用穷举法来找到符合条件的正整数。设a为起始值,b为终止值,对于a到b之间的每一个正整数,我们依次计算乘以3、4、5、6后得到的整数各位数字之和,如果它们相等,则满足条件。
以下是Python代码实现:
```python
def get_digit_sum(n):
"""计算一个正整数的各位数字之和"""
return sum(map(int, str(n)))
def find_numbers(a, b):
"""在a到b之间找到符合条件的正整数"""
res = []
for i in range(a, b+1):
s3, s4, s5, s6 = get_digit_sum(i*3), get_digit_sum(i*4), get_digit_sum(i*5), get_digit_sum(i*6)
if s3 == s4 == s5 == s6:
res.append(i)
return res
```
例如,调用`find_numbers(1, 1000)`,可以找到符合条件的正整数有:`[27, 81, 108, 324, 648]`。