본문 바로가기
파이썬/연습하기

[파이썬]숫자의 제곱 사이클 구하기

by 코키드 Cokid 2022. 10. 28.
반응형

이번 포스팅에서는 숫자의 제곱 사이클을 구해보자.

 

숫자의 제곱 사이클 구하기

문제 정의

입력으로 어떤 수가 주어집니다. (예시: 12)
이 수의 각 자릿수의 제곱을 각각 구합니다. (예시: 1, 4)
이 수들을 모두 더합니다. (예시: 5)한 자리 수가 나오면 그냥 제곱만 하면 됩니다. (예시: 25)
이것을 반복합니다. (예시: 12 - 5 - 25 - 29 ...)
이때, 4처럼 순환하는 경우가 있습니다. (4 - 16 - 37 - 58 - 89 - 145 - 42 - 20 - 4 [무한 반복])
여기에서 순환할 때 지나가는 수의 개수를 출력합니다. (4에서는 8개[4, 16, 37, 58, 89, 145, 42, 20])
100번 계산해도 순환되는 것이 나오지 않으면 '100개 이상'을 출력합니다.

 

전체코드

user_input = input("숫자를 입력하세요> ")
initial_num = int(user_input)
result = [int(user_input)]
a = 1
while a<100:
    a+=1
    temp = 0 
    if len(user_input) == 1:
        temp += int(user_input)**2
    else:
        for i in user_input:
            temp += int(i)**2
    if temp != initial_num:
        result.append(temp)
        user_input = str(temp)
    else: break

if a==100:
    print(result, "100 이상")
else:
    print(result, len(result))
#결과 출력
숫자를 입력하세요> 4
[4, 16, 37, 58, 89, 145, 42, 20] 8
숫자를 입력하세요> 12
[12, 5, 25, 29, 85, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, 37] 100 이상

 

반응형

댓글