본문 바로가기

PY(Python Image Processing)/중학수학기초

08소인수분해

728x90
def prime_factors(n):
    factors = []
    divisor = 2

    while n > 1:
        while n % divisor == 0:
            factors.append(divisor)
            n //= divisor
        divisor += 1

    return factors if len(factors) > 0 else [n]

def factorization_string(factors):
    factor_count = {}
    for factor in factors:
        if factor in factor_count:
            factor_count[factor] += 1
        else:
            factor_count[factor] = 1

    factors_str = ' * '.join([f"{k}" + (f'^{v}' if v > 1 else '') for k, v in factor_count.items()])
    return factors_str

# 사용자로부터 수 입력 받기
user_input = int(input("정수를 입력하세요: "))

if user_input <= 1:
    print("1 이상의 정수를 입력해주세요.")
else:
    result = prime_factors(user_input)
    factorization = factorization_string(result)
    print(f"{user_input}의 소인수분해 결과: {factorization}")
728x90

'PY(Python Image Processing) > 중학수학기초' 카테고리의 다른 글

10정수와유리수의대소관계  (0) 2024.08.15
09최대공약수와최소공배수  (0) 2024.08.15
07소수와합성수  (0) 2024.08.15
06_0과절대값  (0) 2024.08.15
05무리수와실수  (0) 2024.08.15