华为机试HJ60查找组成一个偶数最接近的两个素数
题目:
想法:
构建一个判断是否为素数的函数,再构建一个函数输出构成输入数值相差最小的两个素数。为了保证两个素数相差最小,从输入数值的二分之一处开始判断,遍历得到的两个素数是相差最小的素数
input_number = int(input())
def is_prime(n):
"""判断一个数是否为素数"""
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0:
return False
for i in range(3, int(n ** 0.5) + 1, 2):
if n % i == 0:
return False
return True
def find_min_diff_prime_pair(even_number):
"""找到组成指定偶数的两个素数差值最小的素数对"""
for i in range(even_number // 2, 1, -1):
if is_prime(i) and is_prime(even_number - i):
print(i)
print(even_number-i)
break
find_min_diff_prime_pair(input_number)
时间复杂度为:
O
(
n
2
)
O(n^2)
O(n2)
空间复杂度为:
O
(
1
)
O(1)
O(1)