diff --git a/ladderz/src/pre_algebra/unit1.rs b/ladderz/src/pre_algebra/unit1.rs index d813d24..9536a4d 100644 --- a/ladderz/src/pre_algebra/unit1.rs +++ b/ladderz/src/pre_algebra/unit1.rs @@ -136,6 +136,38 @@ pub fn get_multiples_in_range(n: u32, end: u32) -> HashSet { multiples } +/// Checks if a positive integer `n` is a prime number. +/// +/// A prime number is a positive integer greater than 1 that cannot +/// be evenly divisible by any positive integers other than 1 and itself. +/// +/// # Examples +/// +/// ```rust +/// use ladderz::pre_algebra::is_prime; +/// +/// assert!(!is_prime(1)); // 1 is not a prime number +/// assert!(is_prime(2)); // 2 is a prime number +/// assert!(!is_prime(4)); // 4 is not a prime number +/// assert!(is_prime(7)); // 7 is a prime number +/// ``` +/// +/// # Note +/// +/// This function returns `false` for values of `n` less than 2 because, by definition, prime +/// numbers must be greater than 1. +pub fn is_prime(n: u32) -> bool { + if n == 1 { + return false; + }; + for num in 2..n { + if n % num == 0 { + return false; + } + } + true +} + #[cfg(test)] mod tests { use super::*; diff --git a/notebooks/pre-algebra/unit1.ipynb b/notebooks/pre-algebra/unit1.ipynb index 83d653d..440942b 100644 --- a/notebooks/pre-algebra/unit1.ipynb +++ b/notebooks/pre-algebra/unit1.ipynb @@ -199,6 +199,41 @@ "assert get_multiples_in_range(3, 20) == {3, 6, 9, 12, 15, 18}\n", "assert get_multiples_in_range(5, 50) == {5, 10, 15, 20, 25, 30, 35, 40, 45, 50}" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Write a program that determines whether a positive integer `n` is prime.**\n", + "\n", + "For example for `n = 7`, the output of `is_prime(7)` may be:\n", + "\n", + "```\n", + "True\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def is_prime(n: int) -> bool:\n", + " if n == 1: return False\n", + " for num in range(2, n):\n", + " if n % num == 0:\n", + " return False\n", + " return True\n", + "\n", + "assert is_prime(1) == False\n", + "assert is_prime(2) == True\n", + "assert is_prime(3) == True\n", + "assert is_prime(4) == False\n", + "assert is_prime(24) == False\n", + "assert is_prime(59) == True\n", + "assert is_prime(72) == False" + ] } ], "metadata": {