Revert "[+] A4 P3.3"

This reverts commit c50f49021b.
This commit is contained in:
Hykilpikonna
2021-11-09 17:54:51 -05:00
parent c50f49021b
commit 3a8931149a
+8 -8
View File
@@ -83,20 +83,20 @@ def coprime_to_all(primes: set[int], n: int) -> list[int]:
and may NOT modify it (even though it is not as efficient as it could be!!). and may NOT modify it (even though it is not as efficient as it could be!!).
- You will find the math.prod function useful. - You will find the math.prod function useful.
""" """
m = math.prod(primes) increment = math.prod(primes)
nums_so_far = starting_coprime_numbers(primes) nums_so_far = starting_coprime_numbers(primes)
k = len(nums_so_far) period = len(nums_so_far)
while nums_so_far[-k] + m < n: while nums_so_far[-period] + increment < n:
# Note: Write four assert statements here expressing the four loop invariants from the # Note: Write four assert statements here expressing the four loop invariants from the
# assignment handout. These statements should be at the top of the loop body. # assignment handout. These statements should be at the top of the loop body.
# Loop Invariant 1: every number k in nums_so_far is coprime to every prime # Loop Invariant 1: every number k in nums_so_far is coprime to every prime
assert all(all(math.gcd(p, k) == 1 for p in primes) for k in nums_so_far) assert all(all(math.gcd(p, k) == 1 for p in primes) for k in nums_so_far)
# Loop Invariant 2: for all natural numbers i between 0 and # Loop Invariant 2: for all natural numbers i between 0 and
# len(nums_so_far) - k - 1 inclusive, # len(nums_so_far) - period - 1 inclusive,
# nums_so_far[i] + m == nums_so_far[i + k]. # nums_so_far[i] + increment == nums_so_far[i + period].
assert all(nums_so_far[i] + m == nums_so_far[i + k] assert all(nums_so_far[i] + increment == nums_so_far[i + period]
for i in range(len(nums_so_far) - k)) for i in range(len(nums_so_far) - period))
# Loop Invariant 3: for all natural numbers i between 0 and len(nums_so_far) - 2 inclusive, # Loop Invariant 3: for all natural numbers i between 0 and len(nums_so_far) - 2 inclusive,
# nums_so_far[i] < nums_so_far[i + 1] (this means that nums_so_far is always sorted). # nums_so_far[i] < nums_so_far[i + 1] (this means that nums_so_far is always sorted).
assert all(nums_so_far[i] < nums_so_far[i + 1] for i in range(len(nums_so_far) - 2 + 1)) assert all(nums_so_far[i] < nums_so_far[i + 1] for i in range(len(nums_so_far) - 2 + 1))
@@ -105,7 +105,7 @@ def coprime_to_all(primes: set[int], n: int) -> list[int]:
assert all(k in nums_so_far for k in range(nums_so_far[-1] + 1) assert all(k in nums_so_far for k in range(nums_so_far[-1] + 1)
if all(math.gcd(p, k) == 1 for p in primes)) if all(math.gcd(p, k) == 1 for p in primes))
next_number = nums_so_far[-k] + m next_number = nums_so_far[-period] + increment
list.append(nums_so_far, next_number) list.append(nums_so_far, next_number)
return nums_so_far return nums_so_far