Solve 127 with brute force #slow.
This commit is contained in:
67
python/e127.py
Normal file
67
python/e127.py
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
from functools import lru_cache
|
||||||
|
from lib_prime import prime_factors
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=200000)
|
||||||
|
def unique_factors(n: int) -> set[int]:
|
||||||
|
return set(prime_factors(n))
|
||||||
|
|
||||||
|
|
||||||
|
def euler_127():
|
||||||
|
c_max = 120000
|
||||||
|
r = 0
|
||||||
|
|
||||||
|
# for a in [5]:
|
||||||
|
for a in range(1, c_max):
|
||||||
|
fsa = unique_factors(a)
|
||||||
|
# for b in [27]:
|
||||||
|
for b in range(a + 1, c_max):
|
||||||
|
if a + b > c_max:
|
||||||
|
break
|
||||||
|
c = a + b
|
||||||
|
rad = 1
|
||||||
|
|
||||||
|
do_continue = False
|
||||||
|
for fa in fsa:
|
||||||
|
rad *= fa
|
||||||
|
if b % fa == 0:
|
||||||
|
do_continue = True
|
||||||
|
break
|
||||||
|
if c % fa == 0:
|
||||||
|
do_continue = True
|
||||||
|
break
|
||||||
|
if do_continue:
|
||||||
|
continue
|
||||||
|
if rad > c:
|
||||||
|
continue
|
||||||
|
|
||||||
|
do_continue = False
|
||||||
|
fsb = unique_factors(b)
|
||||||
|
for fb in fsb:
|
||||||
|
rad *= fb
|
||||||
|
if c % fb == 0:
|
||||||
|
do_continue = True
|
||||||
|
break
|
||||||
|
if do_continue:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if rad >= c:
|
||||||
|
continue
|
||||||
|
|
||||||
|
fsc = unique_factors(c)
|
||||||
|
for fc in fsc:
|
||||||
|
rad *= fc
|
||||||
|
if rad >= c:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# print(fsa, fsb, fsc)
|
||||||
|
# print(a, b, c)
|
||||||
|
r += c
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
solution = euler_127()
|
||||||
|
print("e127.py: " + str(solution))
|
||||||
|
assert(solution == 18407904)
|
||||||
|
|
||||||
Reference in New Issue
Block a user