This documentation is automatically generated by online-judge-tools/verification-helper
$O(n)$ で素数列挙を行うアルゴリズム。副産物の最小素因数によって $O(\log n)$ で素因数分解ができる。
linear_sieve(n: int) -> Tuple[List[int], List[int]]
整数 n
以下の素数のリストと、各整数について最小素因数のテーブルを返す。計算量 $O(n)$
prime_factors(n: int, mindiv_factor: Sequence[int]) -> List[int]
整数 n
を素因数分解した結果のリストを返す。線形篩によって求めた最小素因数のテーブル mindiv_factor
を引数に取る。計算量 $O(\log n)$
def linear_sieve(n):
prime_list = []
mindiv_factor = [i for i in range(n + 1)]
for i in range(2, n + 1):
if mindiv_factor[i] == i:
prime_list.append(i)
for p in prime_list:
if p * i > n or p > mindiv_factor[i]:
break
mindiv_factor[p * i] = p
return prime_list, mindiv_factor
def prime_factors(n, mindiv_factor):
pf = []
while mindiv_factor[n] != 1:
pf.append(mindiv_factor[n])
n //= mindiv_factor[n]
return pf
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/python.py", line 96, in bundle
raise NotImplementedError
NotImplementedError