Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import sys
- def primes(n):
- candidates = range(2,n+1)
- primes = []
- while candidates:
- prime = candidates[0]
- primes.append(prime)
- candidates = list(filter(lambda x:x%prime, candidates[1:]))
- return len(primes), n == 1 or primes[-1] == n
- def factor(n):
- factors = []
- i = 2
- while i * i <= n:
- while n % i == 0:
- n = n // i
- factors.append(i)
- i = i + 1
- factors.append(n)
- return [factor for factor in factors if factor != 1]
- def get_brackets(n, include_primality=False):
- symbols = [n]
- n_is_prime = None
- while True:
- for index, symbol in enumerate(symbols):
- if type(symbol) == int:
- if symbol == 1:
- symbols[index] = ''
- break
- prime_count, is_prime = primes(symbol)
- if n_is_prime is None:
- n_is_prime = is_prime
- #if is_prime:
- #p_arg = Number(symbol.prime_count())
- #symbols = symbols[:index] + ['<', p_arg, '>'] + symbols[index+1:]
- #break
- #else:
- #symbols = symbols[:index] + [Number(n) for n in factor(symbol.value)] + symbols[index+1:]
- #break
- symbols = symbols[:index] + (
- ['<', prime_count, '>']
- if is_prime
- else factor(symbol)
- ) + symbols[index+1:]
- break
- else:
- break
- brackets = ''.join(symbols)
- return (brackets, n_is_prime) if include_primality else brackets
- if __name__ == '__main__':
- n = int(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read())
- print(get_brackets(n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement