어떤 수의 각 자릿수를 제곱해서 모두 더하고, 전에 나왔던 수가 다시 나올 때까지 같은 과정을 거듭합니다.
그러면 아래의 예와 같은 일련의 수를 얻습니다.
44 → 32 → 13 → 10 → 1 → 1
85 → 89 → 145 → 42 → 20 → 4 → 16 → 37 → 58 → 89
위에서 알 수 있듯이 일단 1 또는 89에 도달하면 그 다음부터는 정해진 수들을 무한히 반복하게 됩니다.
정말 신기한 것은 어떤 숫자로 시작해도 결국에는 1이나 89에 도달한다는 사실입니다.
그러면 1천 미만의 자연수 중에서, 이런 과정을 거쳐 89에 도달하는 수는 몇 개나 있습니까?
count = 0
for input in range(1,1000):
pre=0
while(input!=pre):
sum=0
s=str(input)
length=len(s)
for j in range(0,length):
sum += int(s[j])**2
if sum==1 :
break
if sum==89:
count+=1
break
pre = input
input=sum
print(count)
반응형
'SW Programming > 알고리즘' 카테고리의 다른 글
알고리즘,프로그래머스,파이선/ 소수찾기 (0) | 2021.03.02 |
---|---|
(python) 코딩테스트 연습/스텍,큐/기능개발 (0) | 2021.01.31 |
(python) 쉬운 알고리즘 책 추천_모두의 알고리즘 With 파이썬 (0) | 2018.10.20 |
댓글