Skip to content

Commit 01963e0

Browse files
Next Prime Number (#13631)
* Add Next_Prime_Number with prime checking logic Implement function to find the next prime number. * Rename Next_Prime_Number.py to next_prime_number.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Refactor prime number functions and add type hints --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 6c402a3 commit 01963e0

1 file changed

Lines changed: 80 additions & 0 deletions

File tree

maths/next_prime_number.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
"""
2+
Next Prime Number -- https://en.wikipedia.org/wiki/Prime_number
3+
4+
In the ancient city of Numeria,
5+
legends speak of an oracle whose whispers
6+
could bend the very fabric of mathematics.
7+
Travelers from distant lands would bring her a number,
8+
and in return, she would reveal its future:
9+
the very next prime number.
10+
Your task is to embody the oracle's wisdom.
11+
You will be given a number.
12+
You must find the smallest prime number
13+
that is strictly greater than it.
14+
"""
15+
16+
17+
def is_prime(number: int) -> bool:
18+
"""
19+
Check if a number is prime.
20+
21+
>>> is_prime(2)
22+
True
23+
>>> is_prime(15)
24+
False
25+
>>> is_prime(19)
26+
True
27+
>>> is_prime(1)
28+
False
29+
>>> is_prime(-7)
30+
False
31+
"""
32+
if number <= 1:
33+
return False
34+
if number <= 3:
35+
return True
36+
if number % 2 == 0 or number % 3 == 0:
37+
return False
38+
39+
factor = 5
40+
while factor * factor <= number:
41+
if number % factor == 0 or number % (factor + 2) == 0:
42+
return False
43+
factor += 6
44+
return True
45+
46+
47+
def next_prime(number: int) -> int:
48+
"""
49+
Find the smallest prime number strictly greater than the given number.
50+
51+
>>> next_prime(2)
52+
3
53+
>>> next_prime(7)
54+
11
55+
>>> next_prime(14)
56+
17
57+
>>> next_prime(0)
58+
2
59+
>>> next_prime(-10)
60+
2
61+
"""
62+
if not isinstance(number, int):
63+
raise ValueError("next_prime() only accepts integral values")
64+
65+
candidate = number + 1
66+
while not is_prime(candidate):
67+
candidate += 1
68+
return candidate
69+
70+
71+
if __name__ == "__main__":
72+
import doctest
73+
74+
doctest.testmod()
75+
76+
try:
77+
n = int(input("Enter an integer: ").strip() or 0)
78+
print(f"The next prime number after {n} is {next_prime(n)}")
79+
except ValueError:
80+
print("Please enter a valid integer.")

0 commit comments

Comments
 (0)