Automatic commit performed through alias...
This commit is contained in:
@@ -45,8 +45,10 @@ def primes_gen(start_n,max_n):
|
|||||||
@decorators.function_timer
|
@decorators.function_timer
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
result1 = orig = 600851475143
|
orig = 600851475143
|
||||||
returned_prime = prime_start = 2
|
result1 = orig
|
||||||
|
prime_start = 2
|
||||||
|
returned_prime = prime_start
|
||||||
prime_factor_list = []
|
prime_factor_list = []
|
||||||
|
|
||||||
while returned_prime < orig ** 0.5 and returned_prime<result1:
|
while returned_prime < orig ** 0.5 and returned_prime<result1:
|
||||||
|
|||||||
117
problems/004_problem.py
Normal file
117
problems/004_problem.py
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
|
||||||
|
# Problem 3:
|
||||||
|
#
|
||||||
|
# A palindromic number reads the same both ways.
|
||||||
|
# The largest palindrome made from the product
|
||||||
|
# of two 2-digit numbers is 9009 = 91 × 99.
|
||||||
|
#
|
||||||
|
# Find the largest palindrome made from the
|
||||||
|
# product of two 3-digit numbers.
|
||||||
|
#
|
||||||
|
|
||||||
|
import decorators
|
||||||
|
import time
|
||||||
|
|
||||||
|
# Create function that finds the next
|
||||||
|
# prime number when supplied with an
|
||||||
|
# intitial integer.
|
||||||
|
|
||||||
|
def is_palindrome(candidate):
|
||||||
|
"""
|
||||||
|
Returns a boolean to confirm if the passed
|
||||||
|
integer is a palindrome.
|
||||||
|
|
||||||
|
is_palindrome(candidate)
|
||||||
|
|
||||||
|
param 'candidate': Integer to test for palindrom-iness.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Convert maximum candidate to a list ...
|
||||||
|
listed_candidate = [int(i) for i in str(candidate)]
|
||||||
|
flipped_candidate = [int(i) for i in str(candidate)]
|
||||||
|
#print("{}".format(listed_candidate))
|
||||||
|
|
||||||
|
# Determine length of maximum candidate, and manipulate.
|
||||||
|
num_digits = listed_candidate.__len__()
|
||||||
|
digit_flips = int(num_digits/2)
|
||||||
|
|
||||||
|
for i in range(1,digit_flips):
|
||||||
|
#print("{}".format(i))
|
||||||
|
flipped_candidate[-i-1] = flipped_candidate[i]
|
||||||
|
flipped_candidate[-1] = flipped_candidate[0]
|
||||||
|
|
||||||
|
#print("{}".format(flipped_candidate))
|
||||||
|
|
||||||
|
# Compare ...
|
||||||
|
if listed_candidate == flipped_candidate:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
@decorators.function_timer
|
||||||
|
def main():
|
||||||
|
|
||||||
|
# Define the problem inputs...
|
||||||
|
factor_length = 3
|
||||||
|
|
||||||
|
# Calculate intermediate inputs...
|
||||||
|
max_factor = 10**(factor_length)-1
|
||||||
|
product_of_factors = max_factor * max_factor # Maximum candidate for palindrome test.
|
||||||
|
|
||||||
|
# Initialize loop parameters...
|
||||||
|
n = max_factor
|
||||||
|
m = max_factor
|
||||||
|
n_has_token = False
|
||||||
|
test_passed = False
|
||||||
|
palindrome_list=[]
|
||||||
|
|
||||||
|
while (n*m)>0:
|
||||||
|
|
||||||
|
# Test for "palindrom-iness" ...
|
||||||
|
print("{} * {} = {}".format(n,m,n*m))
|
||||||
|
test_passed = is_palindrome(n*m)
|
||||||
|
# if not test_passed and n_has_token:
|
||||||
|
# n -= 1
|
||||||
|
# if n == 1:
|
||||||
|
# n_has_token = False
|
||||||
|
# n = max_factor
|
||||||
|
# elif not test_passed and not n_has_token:
|
||||||
|
# m -= 1
|
||||||
|
# n_has_token = True
|
||||||
|
# else:
|
||||||
|
# palindrome_list.append(n*m)
|
||||||
|
#
|
||||||
|
if test_passed:
|
||||||
|
palindrome_list.append(n*m)
|
||||||
|
if n_has_token:
|
||||||
|
n -= 1
|
||||||
|
if n ==1:
|
||||||
|
n_has_token = False
|
||||||
|
n = max_factor
|
||||||
|
if not n_has_token:
|
||||||
|
m -= 1
|
||||||
|
n_has_token = True
|
||||||
|
|
||||||
|
if not test_passed:
|
||||||
|
if n_has_token:
|
||||||
|
n -= 1
|
||||||
|
if n ==1:
|
||||||
|
n_has_token = False
|
||||||
|
n = max_factor
|
||||||
|
if not n_has_token:
|
||||||
|
m -= 1
|
||||||
|
n_has_token = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print("{}".format(max(palindrome_list)))
|
||||||
|
# print("{} * {} = {}".format(n,m,n*m))
|
||||||
|
|
||||||
|
# print("The largest palindrome number which is a product of two numbers of length {} is {} ... ".format(num_digits,num_digits))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user