Giới thiệu
Cho một số nguyên n, kiểm tra xem số đó có phải là Số Strong hay không.
Số Strong là số mà tổng giai thừa của các chữ số bằng chính số đó. Giai thừa (ký hiệu !) là tích của tất cả các số nguyên dương từ 1 đến số đó. Ví dụ: 4! = 4×3×2×1 = 24.
Để kiểm tra: tách từng chữ số, tính giai thừa từng chữ số, cộng tổng và so sánh với số ban đầu.
Ví dụ
Input: n = 124 → Output: Không phải số Strong Giải thích: 1! + 2! + 4! = 1 + 2 + 24 = 27 ≠ 124 Input: n = 145 → Output: Là số Strong Giải thích: 1! + 4! + 5! = 1 + 24 + 120 = 145
Phương pháp
- Lấy từng chữ số từ hàng đơn vị
- Tính giai thừa của từng chữ số
- Cộng dồn vào biến kết quả
- So sánh kết quả với số ban đầu
Thuật toán
Hàm factorial(int r):
fact = 1
Khi r > 1:
fact = fact * r
r = r - 1
Trả về fact
Hàm check(int n):
temp = n, result = 0
Khi temp > 0:
rem = temp % 10
result = result + factorial(rem)
temp = temp / 10
Nếu result == n → trả về 1, ngược lại 0
Hàm main:
n = 145
Nếu check(n) → in "Yes it is a strong number"
Ngược lại → in "no it is not a strong number"
Code C
#include <stdio.h>
int factorial(int r) {
int fact = 1;
while (r > 1) {
fact = fact * r;
r--;
}
return fact;
}
int check(int n) {
int temp, rem, result = 0;
temp = n;
while (temp) {
rem = temp % 10;
result = result + factorial(rem);
temp = temp / 10;
}
if (result == n) return 1;
else return 0;
}
int main() {
int n = 145;
if (check(n))
printf("Yes it is a strong number\n");
else
printf("no it is not a strong number\n");
return 0;
}
Kết quả
Yes it is a strong number