欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 3115. 质数的最大距离

3115. 质数的最大距离

2025/11/10 5:12:44 来源:https://blog.csdn.net/qq_45859188/article/details/140129344  浏览:    关键词:3115. 质数的最大距离

Powered by:NEFU AB-IN

Link

文章目录

  • 3115. 质数的最大距离
    • 题意
    • 思路
    • 代码

3115. 质数的最大距离

  • 题意

给你一个整数数组 nums。

返回两个(不一定不同的)质数在 nums 中 下标 的 最大距离。

  • 思路

正常筛即可

  • 代码

'''
Author: NEFU AB-IN
Date: 2024-07-02 15:26:51
FilePath: \LeetCode\3115\3115.py
LastEditTime: 2024-07-02 15:42:16
'''
# 3.8.19 import
from bisect import bisect_left, bisect_right
from collections import Counter, defaultdict, deque
from datetime import datetime, timedelta
from functools import lru_cache
from heapq import heapify, heappop, heappush, nlargest, nsmallest
from itertools import combinations, compress, permutations, starmap, tee
from math import ceil, fabs, floor, gcd, log, sqrt
from string import ascii_lowercase, ascii_uppercase
from sys import exit, setrecursionlimit, stdin, stdout
from typing import Any, Dict, Generic, List, TypeVar, UnionTYPE = TypeVar('TYPE')# Data structure
class SA(Generic[TYPE]):def __init__(self, x: TYPE, y: TYPE):self.x = xself.y = ydef __lt__(self, other: 'SA[TYPE]') -> bool:return self.x < other.xdef __eq__(self, other: 'SA[TYPE]') -> bool:return self.x == other.x and self.y == other.ydef __repr__(self) -> str:return f'SA(x={self.x}, y={self.y})'# Constants
N = int(1e2 + 10)  # If using AR, modify accordingly
M = int(20)  # If using AR, modify accordingly
INF = int(2e9)
OFFSET = int(100)# Set recursion limit
setrecursionlimit(INF)# Read
def input(): return stdin.readline().rstrip("\r\n")  # Remove when Mutiple data
def read(): return map(int, input().split())
def read_list(): return list(read())# Func
class std:letter_to_num = staticmethod(lambda x: ord(x.upper()) - 65)  # A -> 0num_to_letter = staticmethod(lambda x: ascii_uppercase[x])  # 0 -> Aarray = staticmethod(lambda x=0, size=N: [x] * size)array2d = staticmethod(lambda x=0, rows=N, cols=M: [std.array(x, cols) for _ in range(rows)])max = staticmethod(lambda a, b: a if a > b else b)min = staticmethod(lambda a, b: a if a < b else b)removeprefix = staticmethod(lambda s, prefix: s[len(prefix):] if s.startswith(prefix) else s)removesuffix = staticmethod(lambda s, suffix: s[:-len(suffix)] if s.endswith(suffix) else s)@staticmethoddef find(container: Union[List[TYPE], str], value: TYPE):"""Returns the index of value in container or -1 if value is not found."""if isinstance(container, list):try:return container.index(value)except ValueError:return -1elif isinstance(container, str):return container.find(value)@staticmethoddef pairwise(iterable):"""Return successive overlapping pairs taken from the input iterable."""a, b = tee(iterable)next(b, None)return zip(a, b)# ————————————————————— Division line ——————————————————————class Solution:def maximumPrimeDifference(self, nums: List[int]) -> int:primes = []cnt = 0is_prime = std.array(1, N)def prime_filter():nonlocal primes, cnt, is_primeis_prime[0] = is_prime[1] = 0for i in range(2, N):if is_prime[i]:primes.append(i)cnt += 1j = 0while j <= cnt and primes[j] * i < N:is_prime[primes[j] * i] = 0if i % primes[j] == 0:breakj += 1return prime_filter()n = len(nums)i, j = 0, n - 1while i < n and not is_prime[nums[i]]:i += 1while j > 0 and not is_prime[nums[j]]:j -= 1return j - i

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词