제목:

파이썬으로 하샤드 수 체크하기

날짜: Posted on

이썬으로 하샤드 수를 체크하는 방법입니다.

어떤 자연수 n의 각 자릿수들을 모두 더한 값이 m이라고 했을 때, n이 m으로 나누어 떨어진다면 그 수는 하샤드 수입니다. 예를 들어, n이 12라고 하면 12의 각 자릿수를 모두 더한 값(1+2)인 m은 3이고, 12는 3으로 나누어 떨어지므로, 12는 하샤드 수입니다.

같은 수라도 진법에 따라 하샤드 수일 수도 있고 아닐 수도 있습니다. 예를 들어, 12는 10진법으로 하면 하샤드 수이지만, 8진법으로 하면 0o14가 되고 1+4는 5, 5는 12의 약수가 아니므로 하샤드 수가 아니게 됩니다. 참고로 1, 2, 4, 6은 어느 진법에서든 항상 하샤드 수가 됩니다.

코드는 아래와 같습니다. 여기서는 10진법 기준으로 체크합니다.

def is_harshad_number(n):
    """
    하샤드 수 체크 함수

    인수:
        n: 체크할 정수.

    반환:
        하샤드 수이면 True, 아니면 False
    """
    if n <= 0:  # 하샤드 수는 양수만 유효
        return False

    original_n = n
    sum_of_digits = 0
    while n > 0:
        sum_of_digits += n % 10  # 끝자리를 더함
        n //= 10                 # 끝자리 제거

    if sum_of_digits == 0: # 0이면 거짓을 반환
        return False

    return original_n % sum_of_digits == 0

# 예제:
print(is_harshad_number(18))  # 출력: True (1+8=9, 18 % 9 == 0)
print(is_harshad_number(15))  # 출력: False (1+5=6, 15 % 6 != 0)
print(is_harshad_number(21))  # 출력: True (2+1=3, 21 % 3 == 0)
print(is_harshad_number(0))   # 출력: False

이 코드의 실행 결과는 다음과 같습니다.

True
False
True
False

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다