# 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()