Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- # how many numbers we're going to find the factors of
- input_count = 0
- # where the factors are being stored (2D array)
- factors = []
- # function for finding factors
- def find_and_store(number=0):
- number = abs(number) if (number < 0 and number != 1) else 1 if (number == 0) else number
- # 1 and number are always factors
- n_factors = [1]
- # going through possible factors
- for i in range(2, number):
- for j in range(i, number):
- product = i * j
- # adding factor to list
- if product == number:
- n_factors.append(i)
- # accounting for perfect squares
- if (i != j):
- n_factors.append(j)
- break
- # if the product is greater then the number it isn't a factor
- elif product > number:
- break
- continue
- n_factors.append(number)
- factors.append(n_factors)
- def calculate_gcf():
- primary_factors = factors[0]
- secondary_factors = factors[1]
- gcf = 0
- # slow check each factor
- for f1 in primary_factors:
- for f2 in secondary_factors:
- if f1 == f2 and f1 > gcf:
- gcf = f1
- break
- return gcf
- print("GCF Calculator - Slow Version\n")
- while True:
- number = input("Enter integer to find factors: ")
- # any non-number will break out of the program
- try:
- # using an exception because I can't get isnan to work as it's suppose to and I just wanted to get this working
- math.isnan(float(number))
- except ValueError:
- break
- find_and_store(int(number))
- # if more then one number was entered we can calculate a GCF
- if len(factors) > 1:
- gcf = calculate_gcf()
- print(gcf)
- else:
- print("Must provide at least two numbers to calculate a GCF")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement