Extract prime factor functions (from 3 & 5) into util.py
This commit is contained in:
parent
5e518627e5
commit
7adc277e90
55
0003.py
55
0003.py
@ -1,57 +1,12 @@
|
|||||||
from functools import reduce
|
from functools import reduce
|
||||||
target = 600851475143
|
|
||||||
|
|
||||||
# list = []
|
|
||||||
|
|
||||||
# for num in range(1, int(target / 2)):
|
|
||||||
# print(num)
|
|
||||||
# if (target % num == 0):
|
|
||||||
# list.append(num)
|
|
||||||
|
|
||||||
# 2^x - 1 6k - 1
|
|
||||||
# print(list)
|
|
||||||
factors = []
|
|
||||||
def findLargestPrimeFactor(n):
|
|
||||||
primeFactor = 1
|
|
||||||
factors.append(primeFactor)
|
|
||||||
print('appended')
|
|
||||||
i = 2
|
|
||||||
|
|
||||||
while i <= n / i:
|
|
||||||
if n % i == 0:
|
|
||||||
factors.append(i)
|
|
||||||
primeFactor = i
|
|
||||||
n = int(n / i)
|
|
||||||
else:
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
if primeFactor < n:
|
|
||||||
primeFactor = n
|
|
||||||
|
|
||||||
return primeFactor
|
|
||||||
|
|
||||||
def findPrimeFactors(n):
|
|
||||||
factors = []
|
|
||||||
|
|
||||||
i = 2
|
|
||||||
|
|
||||||
while i <= n / i:
|
|
||||||
if n % i == 0:
|
|
||||||
factors.append(i)
|
|
||||||
n = int(n / i)
|
|
||||||
else:
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
factors.append(n)
|
|
||||||
|
|
||||||
return factors
|
|
||||||
|
|
||||||
|
import util
|
||||||
|
|
||||||
target = 600851475143
|
target = 600851475143
|
||||||
|
|
||||||
# print(findLargestPrimeFactor(target))
|
factors = util.find_prime_factors(target)
|
||||||
factors = findPrimeFactors(target)
|
|
||||||
print(factors)
|
|
||||||
result = reduce((lambda x, y: x * y), factors)
|
result = reduce((lambda x, y: x * y), factors)
|
||||||
|
|
||||||
print(result)
|
print(result)
|
||||||
print(findPrimeFactors(48))
|
print(result == target)
|
||||||
|
|||||||
26
0005.py
26
0005.py
@ -1,27 +1,14 @@
|
|||||||
from collections import Counter
|
from collections import Counter
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
import util
|
||||||
|
|
||||||
def find_prime_factors(n):
|
target = 232792560
|
||||||
factors = []
|
|
||||||
|
|
||||||
i = 2
|
|
||||||
|
|
||||||
while i <= n / i:
|
|
||||||
if n % i == 0:
|
|
||||||
factors.append(i)
|
|
||||||
n = int(n / i)
|
|
||||||
else:
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
factors.append(n)
|
|
||||||
|
|
||||||
return factors
|
|
||||||
|
|
||||||
def divisible(rng):
|
def divisible(rng):
|
||||||
factors = None
|
factors = None
|
||||||
|
|
||||||
for num in rng:
|
for num in rng:
|
||||||
nums = find_prime_factors(num)
|
nums = util.find_prime_factors(num)
|
||||||
count = Counter(nums)
|
count = Counter(nums)
|
||||||
|
|
||||||
if (factors == None):
|
if (factors == None):
|
||||||
@ -32,18 +19,15 @@ def divisible(rng):
|
|||||||
factors[key] = value
|
factors[key] = value
|
||||||
|
|
||||||
return factors
|
return factors
|
||||||
# max_num = max(rng)
|
|
||||||
|
|
||||||
|
|
||||||
factors = divisible(range(1, 21))
|
factors = divisible(range(1, 21))
|
||||||
|
|
||||||
# print(factors)
|
|
||||||
|
|
||||||
# reduce(def fnc(value, key): print(value), factors.items())
|
|
||||||
|
|
||||||
result = 1
|
result = 1
|
||||||
|
|
||||||
for key, value in factors.items():
|
for key, value in factors.items():
|
||||||
result *= key ** value
|
result *= key ** value
|
||||||
|
|
||||||
print(result)
|
print(result)
|
||||||
|
print(result == target)
|
||||||
|
|
||||||
|
|||||||
36
util.py
Normal file
36
util.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
def find_largest_prime_factor(n):
|
||||||
|
prime_factor = 1
|
||||||
|
factors.append(prime_factor)
|
||||||
|
|
||||||
|
print('appended')
|
||||||
|
i = 2
|
||||||
|
|
||||||
|
while i <= n / i:
|
||||||
|
if n % i == 0:
|
||||||
|
factors.append(i)
|
||||||
|
prime_factor = i
|
||||||
|
n = int(n / i)
|
||||||
|
else:
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if prime_factor < n:
|
||||||
|
prime_factor = n
|
||||||
|
|
||||||
|
return prime_factor
|
||||||
|
|
||||||
|
|
||||||
|
def find_prime_factors(n):
|
||||||
|
factors = []
|
||||||
|
|
||||||
|
i = 2
|
||||||
|
|
||||||
|
while i <= n / i:
|
||||||
|
if n % i == 0:
|
||||||
|
factors.append(i)
|
||||||
|
n = int(n / i)
|
||||||
|
else:
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
factors.append(n)
|
||||||
|
|
||||||
|
return factors
|
||||||
Loading…
Reference in New Issue
Block a user