Skip to content

Commit 2122474

Browse files
quant12345pre-commit-ci[bot]cclauss
authored
Segmented sieve - doctests (#9945)
* Replacing the generator with numpy vector operations from lu_decomposition. * Revert "Replacing the generator with numpy vector operations from lu_decomposition." This reverts commit ad217c6. * Added doctests. * Update segmented_sieve.py Removed unnecessary check. * Update segmented_sieve.py Added checks for 0 and negative numbers. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update segmented_sieve.py * Update segmented_sieve.py Added float number check. * Update segmented_sieve.py * Update segmented_sieve.py simplified verification * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update segmented_sieve.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update segmented_sieve.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * ValueError: Number 22.2 must instead be a positive integer --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com>
1 parent 80a2087 commit 2122474

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

maths/segmented_sieve.py

+36-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,36 @@
44

55

66
def sieve(n: int) -> list[int]:
7-
"""Segmented Sieve."""
7+
"""
8+
Segmented Sieve.
9+
10+
Examples:
11+
>>> sieve(8)
12+
[2, 3, 5, 7]
13+
14+
>>> sieve(27)
15+
[2, 3, 5, 7, 11, 13, 17, 19, 23]
16+
17+
>>> sieve(0)
18+
Traceback (most recent call last):
19+
...
20+
ValueError: Number 0 must instead be a positive integer
21+
22+
>>> sieve(-1)
23+
Traceback (most recent call last):
24+
...
25+
ValueError: Number -1 must instead be a positive integer
26+
27+
>>> sieve(22.2)
28+
Traceback (most recent call last):
29+
...
30+
ValueError: Number 22.2 must instead be a positive integer
31+
"""
32+
33+
if n <= 0 or isinstance(n, float):
34+
msg = f"Number {n} must instead be a positive integer"
35+
raise ValueError(msg)
36+
837
in_prime = []
938
start = 2
1039
end = int(math.sqrt(n)) # Size of every segment
@@ -42,4 +71,9 @@ def sieve(n: int) -> list[int]:
4271
return prime
4372

4473

45-
print(sieve(10**6))
74+
if __name__ == "__main__":
75+
import doctest
76+
77+
doctest.testmod()
78+
79+
print(f"{sieve(10**6) = }")

0 commit comments

Comments
 (0)