Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra số chia hết tổng giai thừa chữ số C++

Cho số n. Kiểm tra n có chia hết cho tổng giai thừa các chữ số của nó không.

Ví dụ: n=19. Tổng giai thừa chữ số = 1! + 9! = 1 + 362880 = 362881. 362881 % 19 = 0 → YES.

Giải thuật

  1. Tách chữ số của n
  2. Tính giai thừa mỗi chữ số (có thể precompute 0!..9!)
  3. Tổng các giai thừa
  4. Kiểm tra tổng % n == 0

Ví dụ minh họa

#include <iostream>
using namespace std;

int factorial(int n) {
    if (n <= 1) 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;
    }
    return (sum % temp == 0);
}

int main() {
    int number = 19;
    if (isDigitsFactDivByNumber(number))
        cout << "Co, so chia het tong giai thua chu so.";
    else
        cout << "Khong, so KHONG chia het tong giai thua chu so.";
}

Kết quả

Co, so chia het tong giai thua chu so.