Automatic commit performed through alias...
This commit is contained in:
@@ -14,6 +14,51 @@
|
|||||||
import decorators # Typically imported to compute execution duration of functions.
|
import decorators # Typically imported to compute execution duration of functions.
|
||||||
import time # Typically imported for sleep function, to slow down execution in terminal.
|
import time # Typically imported for sleep function, to slow down execution in terminal.
|
||||||
import typing
|
import typing
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
# Create function that finds the next
|
||||||
|
# prime number when supplied with an
|
||||||
|
# intitial integer.
|
||||||
|
|
||||||
|
def primes_gen(start_n: int,max_n: int):
|
||||||
|
"""
|
||||||
|
Returns a generator object, containing the
|
||||||
|
primes inside a specified range.
|
||||||
|
primes_gen(start_n,max_n)
|
||||||
|
param 'start_n': Previous prime.
|
||||||
|
param 'max_n': Maximum
|
||||||
|
"""
|
||||||
|
start_n += 1
|
||||||
|
for candidate in range(start_n,max_n):
|
||||||
|
notPrime = False
|
||||||
|
|
||||||
|
if candidate in [0,1,2,3]:
|
||||||
|
yield candidate
|
||||||
|
for dividend in range(2,candidate):
|
||||||
|
|
||||||
|
if candidate%dividend == 0:
|
||||||
|
notPrime = True
|
||||||
|
|
||||||
|
if not notPrime:
|
||||||
|
yield candidate
|
||||||
|
|
||||||
|
|
||||||
|
def find_prime_factors(n: int):
|
||||||
|
"""
|
||||||
|
Return a list object containing all
|
||||||
|
prime factors of the provided integer, n.
|
||||||
|
|
||||||
|
find_prime_factors(n)
|
||||||
|
|
||||||
|
param 'n': The integer to be analyzed.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
returned_prime = list(primes_gen(0,n))
|
||||||
|
pprint.pprint(returned_prime)
|
||||||
|
|
||||||
|
return returned_prime
|
||||||
|
|
||||||
|
|
||||||
def evenly_divisible(candidate: int,factors: list):
|
def evenly_divisible(candidate: int,factors: list):
|
||||||
"""
|
"""
|
||||||
@@ -43,25 +88,50 @@ def main():
|
|||||||
|
|
||||||
# Receive problem inputs...
|
# Receive problem inputs...
|
||||||
smallest_factor = 1
|
smallest_factor = 1
|
||||||
largest_factor = 17
|
largest_factor = 5
|
||||||
|
|
||||||
# Compute intermediate inputs
|
# Compute intermediate inputs
|
||||||
factor_list = [int(i) for i in range(smallest_factor,largest_factor+1)]
|
factor_list = [int(i) for i in range(smallest_factor,largest_factor+1)]
|
||||||
maximum_solution_bound = 1
|
maximum_solution_bound = 1
|
||||||
for f in factor_list:
|
for f in factor_list:
|
||||||
maximum_solution_bound *= f
|
maximum_solution_bound *= f
|
||||||
|
common = []
|
||||||
|
product = 1
|
||||||
|
|
||||||
# Initialize loop parameters
|
#
|
||||||
n = 10
|
# Brute force method below breaks down
|
||||||
test_passed = False
|
# and doesn't scale well ...
|
||||||
|
#
|
||||||
|
# # Initialize loop parameters
|
||||||
|
# n = 1
|
||||||
|
# test_passed = False
|
||||||
|
#
|
||||||
|
# while n<maximum_solution_bound and not test_passed:
|
||||||
|
# test_passed = evenly_divisible(n,factor_list)
|
||||||
|
# if not test_passed:
|
||||||
|
# n += 1
|
||||||
|
|
||||||
while n<maximum_solution_bound and not test_passed:
|
# Mathematically, the trick is to recognize
|
||||||
test_passed = evenly_divisible(n,factor_list)
|
# that this a LCM (Least Common Multiple)
|
||||||
if not test_passed:
|
# problem. The solution is list all
|
||||||
n += 1
|
# the prime factors of each number in
|
||||||
|
# the factor list, then compute their
|
||||||
|
# collective product.
|
||||||
|
|
||||||
|
|
||||||
|
pprint.pprint(factor_list)
|
||||||
|
|
||||||
print("The largest palindrome number which is a product of two numbers of length {} is {} ... ".format(factor_list,n))
|
for i in factor_list:
|
||||||
|
common.append(find_prime_factors(i))
|
||||||
|
|
||||||
|
pprint.pprint(common)
|
||||||
|
|
||||||
|
for j in common:
|
||||||
|
for k in j:
|
||||||
|
product *= k
|
||||||
|
|
||||||
|
print(product)
|
||||||
|
|
||||||
|
# print("The largest palindrome number which is a product of two numbers of length {} is {} ... ".format("foo_list","foo"))
|
||||||
|
|
||||||
main()
|
main()
|
||||||
Reference in New Issue
Block a user