mirror of
https://github.com/rzmk/ladderz.git
synced 2025-12-19 06:59:25 +00:00
feat: add is_composite
This commit is contained in:
parent
d2dc769864
commit
1ad53495e8
2 changed files with 83 additions and 3 deletions
|
|
@ -138,8 +138,8 @@ pub fn get_multiples_in_range(n: u32, end: u32) -> HashSet<u32> {
|
||||||
|
|
||||||
/// Checks if a positive integer `n` is a prime number.
|
/// Checks if a positive integer `n` is a prime number.
|
||||||
///
|
///
|
||||||
/// A prime number is a positive integer greater than 1 that cannot
|
/// A prime number is a positive integer greater than 1 that is
|
||||||
/// be evenly divisible by any positive integers other than 1 and itself.
|
/// not evenly divisible by any positive integer other than 1 and itself.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
|
@ -168,6 +168,30 @@ pub fn is_prime(n: u32) -> bool {
|
||||||
true
|
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)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
@ -240,4 +264,15 @@ mod tests {
|
||||||
assert!(is_prime(23));
|
assert!(is_prime(23));
|
||||||
assert!(!is_prime(9514));
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -200,6 +200,15 @@
|
||||||
"assert get_multiples_in_range(5, 50) == {5, 10, 15, 20, 25, 30, 35, 40, 45, 50}"
|
"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",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -215,7 +224,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 13,
|
"execution_count": 2,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -230,10 +239,46 @@
|
||||||
"assert is_prime(2) == True\n",
|
"assert is_prime(2) == True\n",
|
||||||
"assert is_prime(3) == True\n",
|
"assert is_prime(3) == True\n",
|
||||||
"assert is_prime(4) == False\n",
|
"assert is_prime(4) == False\n",
|
||||||
|
"assert is_prime(7) == True\n",
|
||||||
"assert is_prime(24) == False\n",
|
"assert is_prime(24) == False\n",
|
||||||
"assert is_prime(59) == True\n",
|
"assert is_prime(59) == True\n",
|
||||||
"assert is_prime(72) == False"
|
"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": {
|
"metadata": {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue