57 lines
1.1 KiB
Python
57 lines
1.1 KiB
Python
|
|
# Problem 3:
|
|
#
|
|
# The prime factors of 13195
|
|
# are 5, 7, 13 and 29.
|
|
#
|
|
# What is the largest prime
|
|
# factor of the number 600851475143 ?
|
|
#
|
|
import decorators
|
|
import time
|
|
|
|
#def treat_evens(n):
|
|
# mod_is_zero = True
|
|
# done = True
|
|
# dividend = 2
|
|
# while mod_is_zero or done:
|
|
# done = dividend == n
|
|
# num = n/dividend
|
|
# mod_is_zero = 0 == n%dividend
|
|
# dividend *= 2
|
|
# print("{}".format(num))
|
|
# return num
|
|
|
|
# Create function that finds the next
|
|
# prime number when supplied with an
|
|
# intitial integer.
|
|
|
|
def return_next_prime(start_n,max_n):
|
|
|
|
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
|
|
|
|
@decorators.function_timer
|
|
def main():
|
|
|
|
orig = 600851475143
|
|
start = 3
|
|
returned_prime = start
|
|
while returned_prime < orig:
|
|
returned_prime = return_next_prime(start,orig).__next__()
|
|
print("A PRIME HAS BEEN FOUND!!!! ... {}".format(returned_prime))
|
|
start = returned_prime
|
|
|
|
main() |