代码拉取完成,页面将自动刷新
class PrimeHelper:
__slots__ = "_minPrime" # 每个数的最小质因数
def __init__(self, maxN):
"""
maxN_type: int
"""
"""预处理 O(nloglogn)"""
minPrime = list(range(maxN + 1))
upper = int(maxN**0.5) + 1
for i in range(2, upper):
if minPrime[i] < i:
continue
for j in range(i * i, maxN + 1, i):
if minPrime[j] == j:
minPrime[j] = i
self._minPrime = minPrime
def isPrime(self, n):
"""
n_type: int
rtype: bool
"""
if n < 2:
return False
return self._minPrime[n] == n
def getPrimeFactors(self, n):
"""
n_type: int
"""
"""求n的质因数分解 O(logn)"""
pre, f = 1, self._minPrime
while n > 1:
m = f[n]
if m != pre:
yield m
#不是很理解 可以使用return List替换 但是会多一些时间
pre = m
n //= m
def getPrimes(self):
"""
_rtype_: List[int]
"""
return [x for i, x in enumerate(self._minPrime) if i >= 2 and i == x]
prime = open("prime.txt", "w")
PP = PrimeHelper(1000100)
print(PP.getPrimes(),file=prime)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。