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

파이썬으로 특정 구간의 암스트롱 수(Armstrong Number) 찾는 방법

암스트롱 수란 무엇인가?

어떤 수의 각 자릿수를 세제곱한 값들의 합이 그 수 자신과 같을 때, 이를 암스트롱 수(Armstrong Number)라고 부릅니다. 대표적인 예로 153이 있습니다.

예시: 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153

같은 방식으로 370, 371, 407도 암스트롱 수에 해당합니다. 참고로 이러한 수는 '자기애적 수(Narcissistic Number)'라고도 불리며, 자릿수가 늘어나면 세제곱 대신 해당 자릿수만큼 거듭제곱한 값을 사용합니다.

100부터 1000 사이의 암스트롱 수 찾기

다음 파이썬 프로그램은 반복문과 나머지 연산자(%), 몫 연산자(//)를 활용해 100부터 999 사이의 모든 암스트롱 수를 찾아 출력합니다.

for num in range(100, 1000):
    temp = num
    total = 0
    while temp > 0:
        digit = temp % 10      # 마지막 자릿수 추출
        total += digit ** 3    # 세제곱하여 누적
        temp //= 10            # 마지막 자릿수 제거
    if total == num:
        print(num)

코드 동작 원리

  1. 숫자 복사: 원본 값 num을 보존하기 위해 temp 변수에 복사합니다.
  2. 자릿수 추출: temp % 10으로 일의 자리 숫자를 얻습니다.
  3. 세제곱 누적: 추출한 자릿수를 세제곱하여 total에 더합니다.
  4. 자릿수 제거: temp //= 10으로 처리한 자릿수를 버리고 다음 자릿수로 넘어갑니다.
  5. 비교 및 출력: 루프가 끝난 후 total이 원래 수와 같으면 암스트롱 수이므로 출력합니다.

실행 결과

153
370
371
407

100에서 999 사이에는 위 네 개의 암스트롱 수만 존재합니다. 팁으로, 원본 코드에서는 조건 검사가 while 루프 안에 있었지만, 누적이 모두 끝난 뒤 한 번만 비교하도록 루프 밖으로 옮기면 로직이 더 명확하고 안전해집니다. 또한 파이썬 내장 함수 sum()과 이름이 겹치지 않도록 변수명을 total로 사용하는 것이 좋은 코딩 습관입니다.