📅  最后修改于: 2023-12-03 15:11:55.910000             🧑  作者: Mango
本算法的目的是寻找小于等于N的最小一位数质数,该质数的各位数字之和等于N。
质数是只能被1和本身整除的数,例如2、3、5、7等。我们会先判断每个数字是否为质数,再判断各位数字之和是否等于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。