1 Star 1 Fork 0

MojoisMe/数据结构和算法

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
prime.py 1.29 KB
一键复制 编辑 原始数据 按行查看 历史
MojoisMe 提交于 2023-09-17 13:41 . merge
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)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mojoisme/DSA.git
git@gitee.com:mojoisme/DSA.git
mojoisme
DSA
数据结构和算法
master

搜索帮助