Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số nhất định có chia tổng các giai thừa của các chữ số của nó trong C ++ hay không

Giả sử, chúng ta có một số nguyên, chúng ta phải tìm xem số đó có chia tổng giai thừa của các chữ số của nó hay không. Giả sử một số là 19, tổng giai thừa của các chữ số là (1! + 9!) =362881, số này chia hết cho 19.

Để giải quyết vấn đề này, chúng ta sẽ lấy số, sau đó tính giai thừa của mỗi chữ số và cộng tổng, nếu tổng chia hết cho chính số đó thì trả về true, ngược lại là false.

Ví dụ

#include <iostream>
using namespace std;
int factorial(int n){
   if(n == 1 || n == 0)
      return 1;
   return factorial(n - 1) * n;
}
bool isDigitsFactDivByNumber(int num){
   int temp = num;
   int sum = 0;
   while(num){
      int digit = num % 10;
      sum += factorial(digit);
      num /= 10;
   }if(sum%temp == 0){
      return true;
   } return false;
}
int main() {
   int number = 19;
   if (isDigitsFactDivByNumber(number))
      cout << "Yes, the number can divides the sum of factorial of digits.";
   else
      cout << "No, the number can not divides the sum of factorial of digits.";
}

Đầu ra

Yes, the number can divides the sum of factorial of digits.