Cho số N, lặp lại: cộng các chữ số → nếu kết quả ≥ 10 thì tiếp tục cộng chữ số của kết quả... cho đến khi được 1 chữ số (0-9).
Đây chính là Digital Root (Rễ số).
Công thức toán học O(1)
dr(n) = 0 nếu n = 0 dr(n) = 9 nếu n % 9 == 0 dr(n) = n % 9 ngược lại
Chương trình C++
#include <iostream>
using namespace std;
int digitalRoot(long long n) {
if (n == 0) return 0;
return (n % 9 == 0) ? 9 : (n % 9);
}
int main() {
long long nums[] = {14520, 999, 38, 0, 123456789};
for (long long n : nums) {
cout << n << " -> " << digitalRoot(n) << "\n";
}
return 0;
}
Kết quả
14520 -> 3 999 -> 9 38 -> 2 0 -> 0 123456789 -> 9