행복한 소수

면접 대비

시간 제한1초메모리 제한256 MB

요약
n 이하의 수 중에서 소수이면서 자릿수 제곱합 반복이 1에 도달하는 수를 오름차순으로 한 줄에 하나씩 출력합니다.
난이도

보통10점 중 4점

유형
정수론, 해시맵, 시뮬레이션
정답자
아직 제출이 없습니다

문제

양의 정수 nn의 각 자리 숫자를 제곱해서 모두 더한다. 그렇게 나온 합에도 같은 계산을 다시 한다. 이 과정을 반복하다가 1이 나오면 nn을 행복수라고 한다.

700은 행복수이다.

  • 72+02+02=497^2 + 0^2 + 0^2 = 49
  • 42+92=974^2 + 9^2 = 97
  • 92+72=1309^2 + 7^2 = 130
  • 12+32+02=101^2 + 3^2 + 0^2 = 10
  • 12+02=11^2 + 0^2 = 1

2는 행복수가 아니다.

  • 22=42^2 = 4
  • 42=164^2 = 16
  • 12+62=371^2 + 6^2 = 37
  • 32+72=583^2 + 7^2 = 58
  • 52+82=895^2 + 8^2 = 89
  • 82+92=1458^2 + 9^2 = 145
  • 12+42+52=421^2 + 4^2 + 5^2 = 42
  • 42+22=204^2 + 2^2 = 20
  • 22+02=42^2 + 0^2 = 4
  • 42=164^2 = 16
  • 계산이 끝나지 않는다.

소수는 1과 자기 자신 말고는 약수가 없는 수이다. 2, 3, 5, 7, 11, 13, 17, 19, ...가 소수이다.

행복한 소수는 소수이면서 행복수인 수이다. 7, 13, 19, ...가 행복한 소수이다.

nn이 주어지면 nn보다 작거나 같은 행복한 소수를 모두 구하는 프로그램을 작성하시오.

입력

첫째 줄에 nn이 주어진다. (10≤n≤1 000 00010 \le n \le 1\,000\,000)

출력

nn보다 작거나 같은 행복한 소수를 오름차순으로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    20
    
    예상 출력
    7
    13
    19