Skip to content

Instantly share code, notes, and snippets.

@galenseilis
Created October 17, 2022 01:19
Show Gist options
  • Select an option

  • Save galenseilis/ca8b617202a5d797b900b60e9bfd2971 to your computer and use it in GitHub Desktop.

Select an option

Save galenseilis/ca8b617202a5d797b900b60e9bfd2971 to your computer and use it in GitHub Desktop.
Functions for prime factors of integers and fractions of integers
import collections
def prime_factors(n):
'''Brute-force method of searching for primes.'''
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
def frac_factorize(number, counter=True):
'''Calculates the prime factorization of a rational number.'''
neg = number < 0
number = abs(number)
num_str = str(number)
if '.' in num_str:
numerator = prime_factors(int(number * 10 ** len(num_str.split('.')[1])))
denominator = prime_factors(10 ** len(num_str.split('.')[1]))
quotient = [numerator, denominator]
while len(set(numerator).intersection(denominator)):
for i in denominator:
if i in numerator:
denominator.remove(i)
numerator.remove(i)
if counter:
if neg:
numerator.append(-1)
return collections.Counter(numerator), collections.Counter(denominator)
else:
return collections.Counter(numerator), collections.Counter(denominator)
else:
if neg:
numerator.append(-1)
return numerator, denominator
else:
return numerator, denominator
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment