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

C++로 숫자가 23으로 나누어 떨어지는지 확인하는 방법

이 글에서는 어떤 숫자가 23으로 나누어 떨어지는지 판별하는 프로그램을 살펴보겠습니다. 예를 들어 1191216이라는 숫자가 주어졌을 때, 이 숫자는 23으로 나누어 떨어집니다.

23의 배수 판별 규칙

23으로 나누어 떨어지는지 확인하려면 다음 규칙을 따라야 합니다.

  • 매번 숫자(또는 잘린 숫자)의 마지막 자릿수를 추출합니다.
  • 잘린 숫자에 마지막 자릿수에 7을 곱한 값을 더합니다.
  • 필요한 만큼 이 과정을 반복합니다.

예시

17043 → 1704 + 7 × 3 = 1725
1725 → 172 + 7 × 5 = 207
207은 9 × 23이므로, 17043은 23으로 나누어 떨어집니다.

최종적으로 남은 수가 23의 배수라면, 원래 숫자도 23으로 나누어 떨어진다는 것을 알 수 있습니다.

C++ 구현 코드

#include <iostream>
#include <algorithm>
using namespace std;

bool isDivisibleBy23(long long int n) {
    while (n / 100) {
        int last = n % 10;
        n /= 10; // 숫자 잘라내기
        n += last * 7;
    }
    return (n % 23 == 0);
}

int main() {
    long long number = 1191216;
    if(isDivisibleBy23(number))
        cout << "Divisible";
    else
        cout << "Not Divisible";
}

실행 결과

Divisible

코드 설명

위 코드는 숫자가 두 자리 이상인 동안 반복하면서 마지막 자릿수를 분리하고, 나머지 부분에 그 자릿수의 7배를 더하는 방식으로 동작합니다. 반복이 끝나면 최종 값이 23으로 나누어 떨어지는지 검사하여 결과를 반환합니다.

이 방법은 직접 큰 수를 나눗셈하지 않고도 23의 배수 여부를 빠르게 판별할 수 있어, 매우 큰 정수를 다룰 때 유용하게 활용할 수 있습니다.