C++에서 입력받은 숫자의 각 자릿수를 모두 더한 합계를 계산하는 방법을 소개합니다. 아래는 이를 구현한 간단한 예제 코드입니다.
예제 코드
#include<iostream>
using namespace std;
int main() {
int x, s = 0;
cout << "Enter the number : ";
cin >> x;
while (x != 0) {
s = s + x % 10;
x = x / 10;
}
cout << "\nThe sum of the digits : "<< s;
}실행 결과
Enter the number : 236214828 The sum of the digits : 36
코드 설명
위 프로그램에서는 두 개의 변수 x와 s를 선언하고, 합계를 저장할 변수 s는 0으로 초기화합니다. 사용자로부터 숫자를 입력받은 후, while 반복문을 사용하여 숫자가 0이 아닌 동안 각 자릿수를 추출해 합산합니다.
자릿수 추출의 핵심 원리는 다음과 같습니다.
- x % 10 : 숫자를 10으로 나눈 나머지를 구하면 가장 마지막 자릿수(일의 자리)가 추출됩니다.
- x / 10 : 숫자를 10으로 나누면 마지막 자릿수가 제거되어 다음 자릿수를 처리할 수 있습니다.
이 과정을 반복문 안에서 수행하면 모든 자릿수가 하나씩 추출되어 변수 s에 누적되며, x가 0이 되는 순간 반복문이 종료되고 최종 합계가 출력됩니다.
while (x != 0) {
s = s + x % 10;
x = x / 10;
}예를 들어 입력값이 236214828인 경우, 각 자릿수인 2+3+6+2+1+4+8+2+8 = 36이 계산되어 출력됩니다. 이 알고리즘은 시간 복잡도가 O(log₁₀N)으로 매우 효율적이며, 정수형 범위 내의 어떤 숫자든 손쉽게 자릿수 합을 구할 수 있습니다.