📜  从给定数组打印前 K 个不同的 Moran 数(1)

📅  最后修改于: 2023-12-03 15:22:01.574000             🧑  作者: Mango

从给定数组打印前 K 个不同的 Moran 数

简介

Moran数,又称为Niven数,是指能被其各位数字之和整除的正整数。本文介绍如何从给定数组中打印出前K个不同的Moran数组。

算法思路
  1. 首先,遍历给定数组中的每一个元素,计算其各位数字之和。
  2. 如果该元素能够被各位数字之和整除,则这个元素就是一个Moran数。
  3. 将每个找到的Moran数存储在一个数组中,并在存储之前检查是否已经存在于数组中。
  4. 当我们找到了前K个不同的Moran数时,就打印它们并停止搜索。
代码实现
def moran_numbers(arr, k):
    moran_nums = []
    for i in arr:
        num_sum = sum([int(j) for j in str(i)])
        if i % num_sum == 0 and i not in moran_nums:
            moran_nums.append(i)
        if len(moran_nums) == k:
            break
    for num in moran_nums:
        print(num, end=" ")
使用示例
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
moran_numbers(arr, 5)

输出结果:

1 8 9 20 30

以上就是从给定数组中打印前K个不同的Moran数组的一种实现方法。