质数的最大距离

质数的最大距离

要求:给予一个整数数组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
谢谢浏览!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值