diff --git a/ladderz/src/pre_algebra/unit1.rs b/ladderz/src/pre_algebra/unit1.rs index 2f2b182..227a1e8 100644 --- a/ladderz/src/pre_algebra/unit1.rs +++ b/ladderz/src/pre_algebra/unit1.rs @@ -138,8 +138,8 @@ pub fn get_multiples_in_range(n: u32, end: u32) -> HashSet { /// 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. +/// A prime number is a positive integer greater than 1 that is +/// not evenly divisible by any positive integer other than 1 and itself. /// /// # Examples /// @@ -168,6 +168,30 @@ pub fn is_prime(n: u32) -> bool { true } +/// Checks if a positive integer `n` is a composite number. +/// +/// A composite number is a positive integer that is evenly divisible +/// by a positive integer other than 1 and itself. +/// +/// # Examples +/// +/// ```rust +/// use ladderz::pre_algebra::is_composite; +/// +/// assert!(!is_composite(1)); // 1 is not a composite number +/// assert!(!is_composite(2)); // 2 is not a composite number +/// assert!(is_composite(4)); // 4 is a composite number +/// assert!(!is_composite(7)); // 7 is not a composite number +/// ``` +pub fn is_composite(n: u32) -> bool { + for num in 1..n { + if n % num == 0 && num != 1 && num != n { + return true; + } + } + false +} + #[cfg(test)] mod tests { use super::*; @@ -240,4 +264,15 @@ mod tests { assert!(is_prime(23)); assert!(!is_prime(9514)); } + + #[test] + fn test_is_composite() { + assert!(!is_composite(1)); + assert!(!is_composite(2)); + assert!(!is_composite(3)); + assert!(is_composite(4)); + assert!(is_composite(8)); + assert!(is_composite(27)); + assert!(is_composite(51)); + } } diff --git a/notebooks/pre-algebra/unit1.ipynb b/notebooks/pre-algebra/unit1.ipynb index 440942b..44cbd8c 100644 --- a/notebooks/pre-algebra/unit1.ipynb +++ b/notebooks/pre-algebra/unit1.ipynb @@ -200,6 +200,15 @@ "assert get_multiples_in_range(5, 50) == {5, 10, 15, 20, 25, 30, 35, 40, 45, 50}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prime and composite numbers\n", + "\n", + "> [Link to lesson](https://www.khanacademy.org/math/pre-algebra/pre-algebra-factors-multiples/pre-algebra-prime-numbers/v/prime-numbers)." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -215,7 +224,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -230,10 +239,46 @@ "assert is_prime(2) == True\n", "assert is_prime(3) == True\n", "assert is_prime(4) == False\n", + "assert is_prime(7) == True\n", "assert is_prime(24) == False\n", "assert is_prime(59) == True\n", "assert is_prime(72) == False" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Write a program that determines whether a positive integer `n` is composite.**\n", + "\n", + "For example for `n = 7`, the output of `is_composite(7)` may be:\n", + "\n", + "```\n", + "False\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def is_composite(n: int) -> bool:\n", + " for num in range(1, n):\n", + " if n % num == 0 and num != 1 and num != n:\n", + " return True\n", + " return False\n", + "\n", + "assert is_composite(1) == False\n", + "assert is_composite(2) == False\n", + "assert is_composite(3) == False\n", + "assert is_composite(4) == True\n", + "assert is_composite(7) == False\n", + "assert is_composite(24) == True\n", + "assert is_composite(59) == False\n", + "assert is_composite(72) == True" + ] } ], "metadata": {