자기애 수(암스트롱 수)란?
자기애 수(Narcissistic Number)는 '암스트롱 수(Armstrong Number)'라고도 불리는 특별한 형태의 숫자입니다. 정의를 살펴보면, 각 자릿수를 자릿수의 개수만큼 거듭제곱한 값들의 합이 원래 수와 같아지는 수를 의미합니다.
예를 들어 다음과 같은 수들이 모두 자기애 수에 해당합니다.
- 1~9까지의 한 자리 수: 자기 자신의 1제곱이므로 항상 조건을 만족합니다.
- 153: 세 자리 수이므로 1³ + 5³ + 3³ = 1 + 125 + 27 = 153
- 370: 3³ + 7³ + 0³ = 27 + 343 + 0 = 370
파이썬 구현 코드
이러한 자기애 수는 아래 코드를 실행하면 손쉽게 출력할 수 있습니다. 숫자를 문자열로 변환한 뒤 각 자릿수를 분리하고, 자릿수 개수만큼 거듭제곱하여 합산하는 방식으로 동작합니다.
def print_narcissistic_nums(start, end):
for i in range(start, end + 1):
# 숫자를 리스트 형태의 자릿수로 변환
digits = list(map(int, str(i)))
total = 0
length = len(digits)
for d in digits:
total += d ** length
if total == i:
print(i)
print_narcissistic_nums(1, 380)실행 결과
위 코드를 실행하면 1부터 380 사이에 존재하는 자기애 수가 차례대로 출력됩니다.
1 2 3 4 5 6 7 8 9 153 370 371