Solve more problems road to 200.

This commit is contained in:
2024-05-04 09:24:18 -04:00
parent 5ce2c5bcbf
commit a07f34075b
6 changed files with 182 additions and 1 deletions

38
python/e188.py Normal file
View File

@@ -0,0 +1,38 @@
from lib_prime import prime_factors
def phi(n):
# Calculate phi using Euler's totient function
c = n
fs = set(prime_factors(n))
for f in fs:
# same as c *= (1 - 1/f)
c *= (f - 1)
c //= f
return c
def tetmod(a, k, m):
# https://stackoverflow.com/questions/30713648/how-to-compute-ab-mod-m
assert k > 0
if k == 1:
return a
if m == 1:
if a % 2 == 0:
return 0
else:
return 1
phi_m = phi(m)
return pow(a, phi_m + tetmod(a, k - 1, phi_m), m)
def euler_188():
assert phi(100) == 40
assert tetmod(14, 2016, 100) == 36
return tetmod(1777, 1855, 10**8)
if __name__ == "__main__":
solution = euler_188()
print("e188.py: " + str(solution))
assert solution == 95962097