diff --git a/maths/basic_maths.py b/maths/basic_maths.py index 833f31c18b9e..4f89f8607a2d 100644 --- a/maths/basic_maths.py +++ b/maths/basic_maths.py @@ -116,6 +116,35 @@ def euler_phi(n: int) -> int: return int(s) +def is_prime(n: int) -> bool: + """Checks if a number is prime. + + Source: https://en.wikipedia.org/wiki/Prime_number + + >>> is_prime(11) + True + >>> is_prime(15) + False + >>> is_prime(1) + False + >>> is_prime(0) + False + >>> is_prime(2) + True + """ + if n <= 1: + return False + if n in {2, 3}: + return True + if n % 2 == 0 or n % 3 == 0: + return False + for i in range(5, int(math.sqrt(n)) + 1, 6): + if n % i == 0 or n % (i + 2) == 0: + return False + + return True + + if __name__ == "__main__": import doctest