1부터 100 사이의 모든 해피 넘버(Happy Number)를 출력해야 할 때는 간단한 반복문과 %(나머지 연산자), +(덧셈 연산자), //(정수 나눗셈 연산자) 같은 기본 연산을 활용하면 됩니다.
해피 넘버란?
해피 넘버는 숫자의 각 자릿수를 제곱한 값들을 모두 더한 숫자로 계속해서 대체했을 때, 최종적으로 1에 도달하게 되는 수를 의미합니다. 만약 이 과정에서 1이 아닌 4에 도달한다면 해당 수는 해피 넘버가 아닙니다(4로 시작하는 순환에 빠지기 때문입니다).
주어진 범위 내의 해피 넘버를 출력하려면 간단한 반복문을 사용할 수 있습니다.
아래는 그 구현 예시입니다.
예제 코드
def check_happy_num(my_num):
remaining = sum_val = 0
while(my_num > 0):
remaining = my_num%10
sum_val = sum_val + (remaining*remaining)
my_num = my_num//10
return sum_val
print("The list of happy numbers between 1 and 100 are : ")
for i in range(1, 101):
my_result = i
while(my_result != 1 and my_result != 4):
my_result = check_happy_num(my_result)
if(my_result == 1):
print(i)실행 결과
The list of happy numbers between 1 and 100 are : 1 7 10 13 19 23 28 31 32 44 49 68 70 79 82 86 91 94 97 100
코드 설명
check_happy_num이라는 이름의 함수가 정의되며, 하나의 숫자를 매개변수로 받습니다.- 함수 내부에서는 해당 숫자가 0보다 큰지 확인합니다.
- 합계를 저장할 변수
sum_val이 0으로 초기화됩니다. - 숫자를 10으로 나눈 나머지(
%연산)를 구하여 마지막 자릿수를 추출합니다. - 추출된 자릿수를 제곱한 후 합계 변수에 더합니다.
- 정수 나눗셈(
//)을 통해 숫자의 마지막 자릿수를 제거하고, 이 과정을 모든 자릿수에 대해 반복합니다. - 모든 자릿수의 제곱합이 최종 결과로 반환됩니다.
- 1부터 101 미만까지의 범위가 정의되고, 각 숫자가 순차적으로 반복 처리됩니다.
- 각 숫자마다 앞서 정의한 함수가 호출됩니다.
- 반복 과정의 결과가 1이 되면 해당 숫자는 해피 넘버이므로 콘솔에 출력됩니다. 반면 4에 도달하면 해피 넘버가 아니므로 출력되지 않습니다.