회문수 판별과 거꾸로 더하기
회문수는 121이나 12321처럼 앞에서 읽어도 뒤에서 읽어도 같은 수입니다. 판별 방법은 간단합니다. 수를 문자열로 늘어놓고 첫 자리와 끝자리, 둘째 자리와 끝에서 둘째 자리를 차례로 비교해 모두 같으면 회문입니다. 한 자리 수는 비교할 상대가 없으므로 0부터 9까지 모두 회문수입니다.
음수는 관례상 회문수로 보지 않습니다. −121을 뒤집으면 부호의 위치가 달라져 같은 표기가 되지 않기 때문입니다. 이 판별기는 음수를 회문이 아니라고 판정하면서도 절댓값이 회문인지는 따로 알려주므로 두 기준을 모두 확인할 수 있습니다. 또 수에서 앞자리 0은 존재하지 않으므로 012는 12로 읽어 회문이 아니라고 판정합니다.
회문이 아닌 수에는 거꾸로 더하기 과정이 이어집니다. 수와 그 수를 뒤집은 값을 더하고, 결과가 회문이 아니면 다시 같은 작업을 반복하는 방법입니다. 123은 123+321=444로 한 번에 회문이 되고 89는 24단계가 걸립니다. 반대로 196은 아직 회문에 도달한 사례가 알려지지 않아 리크렐 수 후보로 불립니다. 이 계산기는 최대 30단계까지 시도하고, 값이 안전 정수 범위를 넘으면 정확도를 보장할 수 없으므로 중단합니다.
자주 묻는 질문
121이나 12321처럼 앞에서 읽어도 뒤에서 읽어도 같은 수입니다. 한 자리 수는 뒤집어도 자기 자신이므로 모두 회문수입니다.
관례상 아닙니다. −121을 뒤집으면 부호 위치가 달라지기 때문입니다. 이 판별기는 음수를 회문이 아니라고 판정하고 절댓값의 회문 여부를 따로 알려줍니다.
수와 그 수를 뒤집은 값을 더하는 과정을 회문이 될 때까지 반복하는 방법입니다. 123은 123+321=444로 한 번에 회문이 되지만 196은 아무리 반복해도 회문이 알려져 있지 않습니다.