mirror of
https://github.com/rzmk/ladderz.git
synced 2025-12-19 06:59:25 +00:00
feat: add get_primes_in_range & get_prime_factorization to pre-algebra notebook
This commit is contained in:
parent
74397be1ae
commit
466af4ca4c
1 changed files with 100 additions and 7 deletions
|
|
@ -38,7 +38,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 44,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 45,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 46,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -158,7 +158,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 47,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -186,7 +186,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 48,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -224,7 +224,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 49,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -260,7 +260,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 50,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -279,6 +279,99 @@
|
||||||
"assert is_composite(59) == False\n",
|
"assert is_composite(59) == False\n",
|
||||||
"assert is_composite(72) == True"
|
"assert is_composite(72) == True"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"**Write a program that finds all prime numbers of a positive integer `n` in the range `[n, end]`.**\n",
|
||||||
|
"\n",
|
||||||
|
"- Assume that `n` and `end` are positive integers greater than or equal to 1.\n",
|
||||||
|
"\n",
|
||||||
|
"For example for `n = 1` and `end = 20`, the output of `get_primes_in_range(1, 20)` may be:\n",
|
||||||
|
"\n",
|
||||||
|
"```\n",
|
||||||
|
"{2, 3, 5, 7, 11, 13, 17, 19}\n",
|
||||||
|
"```"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 51,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def get_primes_in_range(n: int, end: int) -> set:\n",
|
||||||
|
" primes: set = set()\n",
|
||||||
|
" for num in range(n, end + 1):\n",
|
||||||
|
" if is_prime(num):\n",
|
||||||
|
" primes.add(num)\n",
|
||||||
|
" return primes\n",
|
||||||
|
"\n",
|
||||||
|
"assert get_primes_in_range(1, 1) == set()\n",
|
||||||
|
"assert get_primes_in_range(1, 2) == {2}\n",
|
||||||
|
"assert get_primes_in_range(1, 20) == {2, 3, 5, 7, 11, 13, 17, 19}\n",
|
||||||
|
"assert get_primes_in_range(3, 20) == {3, 5, 7, 11, 13, 17, 19}\n",
|
||||||
|
"assert get_primes_in_range(1, 50) == {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47}\n",
|
||||||
|
"assert get_primes_in_range(32, 85) == {37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83}"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"**Write a program that determines the prime factorization of a positive integer `n`.**\n",
|
||||||
|
"\n",
|
||||||
|
"For example for `n = 12`, the output of `get_prime_factorization(12)` may be:\n",
|
||||||
|
"\n",
|
||||||
|
"```\n",
|
||||||
|
"{2: 2, 3: 1}\n",
|
||||||
|
"```\n",
|
||||||
|
"\n",
|
||||||
|
"This means the prime factorization of 12 is $2^2 \\times 3^1$, where the keys are the prime factors and the values are the exponents."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 52,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def get_prime_factorization(n: int) -> dict:\n",
|
||||||
|
" if n == 1: return {}\n",
|
||||||
|
" prime_factors: dict = {}\n",
|
||||||
|
" primes_of_n: set = get_primes_in_range(1, n)\n",
|
||||||
|
" current_num: int = n\n",
|
||||||
|
" for prime in primes_of_n:\n",
|
||||||
|
" while current_num % prime == 0:\n",
|
||||||
|
" current_num //= prime\n",
|
||||||
|
" if prime not in prime_factors:\n",
|
||||||
|
" prime_factors[prime] = 1\n",
|
||||||
|
" else:\n",
|
||||||
|
" prime_factors[prime] += 1\n",
|
||||||
|
" if current_num in primes_of_n:\n",
|
||||||
|
" if current_num not in prime_factors:\n",
|
||||||
|
" prime_factors[current_num] = 1\n",
|
||||||
|
" else:\n",
|
||||||
|
" prime_factors[current_num] += 1\n",
|
||||||
|
" break\n",
|
||||||
|
" elif current_num == 1:\n",
|
||||||
|
" break\n",
|
||||||
|
" return prime_factors\n",
|
||||||
|
"\n",
|
||||||
|
"assert get_prime_factorization(1) == {}\n",
|
||||||
|
"assert get_prime_factorization(2) == {2: 1}\n",
|
||||||
|
"assert get_prime_factorization(3) == {3: 1}\n",
|
||||||
|
"assert get_prime_factorization(4) == {2: 2}\n",
|
||||||
|
"assert get_prime_factorization(5) == {5: 1}\n",
|
||||||
|
"assert get_prime_factorization(6) == {2: 1, 3: 1}\n",
|
||||||
|
"assert get_prime_factorization(10) == {2: 1, 5: 1}\n",
|
||||||
|
"assert get_prime_factorization(12) == {2: 2, 3: 1}\n",
|
||||||
|
"assert get_prime_factorization(13) == {13: 1}\n",
|
||||||
|
"assert get_prime_factorization(20) == {2: 2, 5: 1}\n",
|
||||||
|
"assert get_prime_factorization(75) == {3: 1, 5: 2}\n",
|
||||||
|
"assert get_prime_factorization(750) == {2: 1, 3: 1, 5: 3}"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue