📜  要求总和等于N的最小一位数质数(1)

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

求要求总和等于N的最小一位数质数

简介

本算法的目的是寻找小于等于N的最小一位数质数,该质数的各位数字之和等于N。

质数是只能被1和本身整除的数,例如2、3、5、7等。我们会先判断每个数字是否为质数,再判断各位数字之和是否等于N。

算法流程
  1. 循环遍历小于等于N的所有数。
  2. 判断该数是否为质数,不是则继续循环。
  3. 将该数的各位数字相加,判断其和是否等于N,如果是则返回该数,否则继续循环。
时间复杂度

本算法的时间复杂度为O(n*sqrt(n)),其中n为输入的数值。

代码示例
def find_prime_num(n):
    for i in range(2, n+1):
        # 判断是否为质数
        prime = True
        for j in range(2, int(i ** 0.5) + 1):
            if i % j == 0:
                prime = False
                break
        if not prime:
            continue
        # 判断各位数字之和是否等于N
        if sum(int(digit) for digit in str(i)) == n:
            return i
    # 没有找到符合条件的质数
    return None

# 示例
n = 10
print(find_prime_num(n))  # 输出 7

返回的结果为最小一位数质数7。