반응형
이번 포스팅에서는 숫자의 제곱 사이클을 구해보자.
숫자의 제곱 사이클 구하기
문제 정의
입력으로 어떤 수가 주어집니다. (예시: 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 이상
반응형
'파이썬 > 연습하기' 카테고리의 다른 글
[파이썬]1~5000 사이의 셀프 넘버들의 합 구하기 (0) | 2022.10.26 |
---|---|
[파이썬]1~10,000까지 8의 개수 세기 (0) | 2022.10.24 |
[파이썬]1부터 1000까지 각 숫자의 개수 세기 (0) | 2022.10.23 |
[파이썬]짝수와 홀수 정리하기 (0) | 2022.10.22 |
[파이썬]3과 5의 배수 찾기 (0) | 2022.10.21 |
댓글