From f2a3e43a0af79ca170be21399171f2329bc9fc59 Mon Sep 17 00:00:00 2001 From: Ehoneah Obed Date: Sat, 17 Sep 2022 21:47:31 +0000 Subject: [PATCH] Update solution for task 0 --- factors | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/factors b/factors index fda1904..6621713 100755 --- a/factors +++ b/factors @@ -1,27 +1,24 @@ #!/usr/bin/python3 -import sys - - -def factorize(num): - """ Generate 2 factors for a given number""" - factor1 = 2 - while (num % factor1): - if (factor1 <= num): - factor1 += 1 - - factor2 = num // factor1 - return (factor2, factor1) - - -if len(sys.argv) != 2: - sys.exit(f"Wrong usage: {sys.argv[0]} ") - -filename = sys.argv[1] - -file = open(filename, 'r') -lines = file.readlines() - -for line in lines: - num = int(line.rstrip()) - factor2, factor1 = factorize(num) - print(f"{num} = {factor2} * {factor1}") +from sys import argv +from math import sqrt + +def factor(): + with open(argv[1]) as f: + for line in f: + num = int(line) + print("{:d}=".format(num), end="") + if num % 2 == 0: + print("{}*2".format(num//2)) + continue + sqn = int(sqrt(num)) + if sqn % 2 == 0: + sqn += 1 + for i in range(3, sqn + 1, 2): + if num % i == 0: + print("{}*{}".format(i, num//i)) + break + if num % i != 0: + print("{}={}*1".format(num, num)) + + +factor()