质数的最大距离
要求:给予一个整数数组nums
。
返回两个(不一定不同的)质数在nums
中下标的最大距离。
示例1:
输入:nums=[ 4, 2 ,9 ,5 3 ]
输出:3
解释:nums[1]、nums[3]和nums[4]是质数。因此答案是| 4 - 1 | = 3
示例2:
输入:nums = [ 4, 8, 2, 8 ]
输出:0
解释:nums[2]是质数。因为只有一个质数,所以答案是| 2 - 2 | = 0
提示:
1<= nums.[ i ]
<= 100
输入保证nums
中至少有一个质数
各位同学可以自己先尝试一下再看下面的参考答案
参考答案
def is_prime(n):
"""判断一个数是否是质数"""
if n <= 1:
return False
if n == 2:
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 max_prime_distance(arr):
"""返回两个质数中下标的 最大距离"""
prime_indices = []
# 找到所有质数的下标
for i, num in enumerate(arr):
if is_prime(num):
prime_indices.append(i)
# 如果质数少于两个,则返回 0
if len(prime_indices) < 2:
return 0
# 计算最大距离
max_distance = max(prime_indices[-1] - prime_indices[0], prime_indices[-2] - prime_indices[0])
return max_distance
以上是基本代码,同学们可以自己尝试输入一段数据,看看你的结果是否可以正确显示:
示例用法
arr = [10, 3, 5, 7, 11, 4, 6, 13]
print(max_prime_distance(arr))
上列代码输出为:6
谢谢浏览!