Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 큰 수를 2, 3, 5로 나눌 수 있는지 확인

<시간/>

여기서 우리는 숫자가 2, 3, 5로 나누어 떨어지는지 아닌지 확인하는 방법을 볼 것입니다. 이 경우 숫자는 매우 큰 숫자입니다. 그래서 우리는 숫자를 문자열로 넣습니다.

어떤 숫자가 2,3, 5의 최소공배수(LCM)로 나누어 떨어지면 2, 3, 5로 나눌 수 있습니다. 따라서 2, 3, 5의 최소공배수는 30입니다. 우리는 그 수가 30으로 나누어 떨어지는지 확인해야 합니다. 10의 배수(마지막 자릿수가 0)와 3의 배수(모든 자릿수의 합이 3의 배수)일 때 30의 배수입니다.

예시

#include <bits/stdc++.h>
using namespace std;
bool isDiv30(string num){
   int n = num.length();
   if(num[n - 1] != '0')
      return false;
      long sum = accumulate(begin(num), end(num), 0) - '0' * n;
   if(sum % 3 == 0)
      return true;
   return false;
}
int main() {
   string num = "353730746028908374890";
   if(isDiv30(num)){
      cout << "Divisible";
   } else {
      cout << "Not Divisible";
   }
}

출력

Divisible