Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 구현하는 네온 숫자(Neon Number) 판별 방법

네온 숫자(Neon Number)란 어떤 수를 제곱했을 때, 그 결과값의 각 자릿수를 모두 더한 합이 원래의 수와 같아지는 수를 말합니다. 간단한 예시로 살펴보겠습니다.

n = 9

제곱값 = 81

제곱값의 자릿수 합 = 8 + 1 = 9

자릿수 합이 원래 수인 9와 같으므로, 9는 네온 숫자입니다.

참고로 10진수에서 네온 숫자는 0, 1, 9 단 세 개뿐이라는 점도 흥미롭습니다.

이번 글에서는 주어진 수가 네온 숫자인지 판별하는 프로그램을 만들어 보겠습니다. 네온 숫자라면 "Yes"를, 아니라면 "No"를 출력하면 됩니다.

알고리즘

  • 판별할 수 n을 초기화합니다.
  • 수 n의 제곱을 구합니다.
  • 제곱값의 각 자릿수 합을 계산합니다.
  • 자릿수 합이 원래 수 n과 같으면 true, 그렇지 않으면 false를 반환합니다.

C++ 구현

다음은 위 알고리즘을 C++로 구현한 코드입니다.

#include <bits/stdc++.h>
using namespace std;
int isNeonNumber(int x) {
    int square = x * x;
    int digitsSum = 0;
    while (square != 0) {
        digitsSum += (square % 10);
        square = square / 10;
    }
    return digitsSum == x;
}
int main(void) {
    string result;
    result = isNeonNumber(1) ? "Yes" : "No";
    cout << 1 << "->" << result << endl;
    result = isNeonNumber(3) ? "Yes" : "No";
    cout << 3 << "->" << result << endl;
    result = isNeonNumber(9) ? "Yes" : "No";
    cout << 9 << "->" << result << endl;
}

코드 설명

isNeonNumber 함수는 먼저 입력받은 수의 제곱을 계산한 뒤, while 반복문을 통해 제곱값을 10으로 나눈 나머지(% 10)로 일의 자릿수를 하나씩 추출하여 더합니다. 이후 몫(/ 10)으로 다음 자릿수로 이동하며, 이 과정을 제곱값이 0이 될 때까지 반복합니다. 마지막으로 계산된 자릿수 합이 원래 수와 같은지 비교한 결과를 반환합니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

1->Yes
3->No
9->Yes

1과 9는 네온 숫자이므로 "Yes"가 출력되고, 3은 제곱하면 9가 되어 자릿수 합이 3이 아니므로 "No"가 출력되는 것을 확인할 수 있습니다.