Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 강한 수(Strong Number)를 찾는 방법

강한 수(Strong Number)란?

강한 수(Strong Number)는 각 자릿수의 팩토리얼 값을 모두 더한 합이 자기 자신과 같은 수를 의미합니다. 대표적인 예로 145가 있으며, 그 이유는 다음과 같습니다.

  • 1! = 1
  • 4! = 24
  • 5! = 120
  • 합계: 1 + 24 + 120 = 145 ✓

이처럼 자릿수 팩토리얼의 합이 원래 수와 일치할 때 해당 숫자를 강한 수라고 부릅니다.

1단계: 팩토리얼 함수 만들기

먼저 특정 숫자의 팩토리얼을 계산하는 함수를 작성합니다. while 반복문을 사용하면 간단하게 구현할 수 있습니다.

def factorial(n):
    num = 1
    while n >= 1:
        num = num * n
        n = n - 1
    return num

2단계: 강한 수 출력하기

이제 주어진 범위 안의 모든 숫자를 검사해 강한 수를 찾아 출력하는 코드를 작성해 보겠습니다. 숫자를 문자열로 변환한 뒤 각 자릿수로 분리하고, 각 자릿수의 팩토리얼을 더해 원래 수와 비교하는 방식입니다.

def print_strong_nums(start, end):
    for i in range(start, end + 1):
        # 숫자를 자릿수 리스트로 변환
        digits = list(map(int, str(i)))
        total = 0
        for d in digits:
            total += factorial(d)
        if total == i:
            print(i)

print_strong_nums(1, 380)

실행 결과

1
2
145

결과 해석

1부터 380 사이에는 세 개의 강한 수가 존재합니다.

  • 1: 1! = 1
  • 2: 2! = 2
  • 145: 1! + 4! + 5! = 1 + 24 + 120 = 145

참고로 탐색 범위를 넓히면 40585 역시 강한 수에 해당합니다(4! + 0! + 5! + 8! + 5! = 24 + 1 + 120 + 40320 + 120 = 40585). 실제로 강한 수는 매우 드물어, 알려진 강한 수는 1, 2, 145, 40585 네 개뿐입니다.