소수의 디지털 근
면접 대비시간 제한2초메모리 제한512 MB
0이 나올 때까지 각 수의 자릿수를 반복해서 더하되 소수가 나오면 멈추고, 원래 수와 소수 디지털 근 또는 none을 출력한다.
문제
어떤 수의 디지털 근은 그 수를 이루는 각 자리의 숫자를 모두 더한 값이다. 그 결과가 두 자리 이상이면 한 자리만 남을 때까지 이 과정을 반복한다.
이 문제에서 구해야 하는 것은 디지털 근의 변형인 소수의 디지털 근이다. 위에서 설명한 덧셈 과정은 한 자리만 남으면 멈추지만, 원래 수나 중간에 만들어진 수가 소수이면 그때도 멈춘다. 과정이 계속되어 한 자리에 도달했는데 그 수가 소수가 아니면, 원래 수에는 소수의 디지털 근이 없다.
1보다 큰 정수 중 양의 약수가 1과 자기 자신뿐인 수를 소수라고 한다.
- 예를 들어 처음 여섯 개의 소수는 2, 3, 5, 7, 11, 13이다.
- 6의 양의 약수는 6, 3, 2, 1 네 개이므로 6은 소수가 아니다.
- 주의: 1은 소수가 아니다.
다음은 소수의 디지털 근을 구하는 예이다.
- 1은 소수가 아니므로 1에는 소수의 디지털 근이 없다.
- 3은 소수이므로 3의 소수의 디지털 근은 3이다.
- 4는 소수가 아니므로 4에는 소수의 디지털 근이 없다.
- 11은 소수이므로 11의 소수의 디지털 근은 11이다.
- 642는 소수가 아니므로 각 자리의 숫자를 더하면 6 + 4 + 2 = 12이다. 12는 소수가 아니므로 다시 더하면 1 + 2 = 3이다. 3은 소수이므로 642의 소수의 디지털 근은 3이다.
- 128은 소수가 아니므로 각 자리의 숫자를 더하면 1 + 2 + 8 = 11이다. 11은 소수이므로 128의 소수의 디지털 근은 11이다.
- 886은 소수가 아니므로 각 자리의 숫자를 더하면 8 + 8 + 6 = 22이다. 22는 소수가 아니므로 다시 더하면 2 + 2 = 4이다. 4는 소수가 아니므로 886에는 소수의 디지털 근이 없다.
입력
입력은 한 줄에 하나씩 0 이상 999999 이하의 정수로 이루어진다. 입력의 끝은 0으로 표시한다.
출력
입력한 수에 소수의 디지털 근이 있으면 입력한 수를 너비 7에 오른쪽 정렬하여 출력한다. 그 뒤에 공백 하나를 출력하고, 계산한 소수의 디지털 근도 너비 7에 오른쪽 정렬하여 출력한다.
입력한 수에 소수의 디지털 근이 없으면 위와 같이 입력한 수를 출력한 뒤 공백 4개와 소문자 none을 출력한다. 끝을 알리는 0은 출력하지 않는다.