Cho số x có n chữ số. Kiểm tra Plus Perfect Number (tương tự số Armstrong): tổng lũy thừa n của từng chữ số có bằng x không.
Công thức: Σ (chữ_số)ⁿ = x
Ví dụ
Input: 163 → 1³+6³+3³=244 ≠ 163 → Không phải Input: 371 → 3³+7³+1³=371 → Là Plus Perfect Number
Phương pháp:
- Đếm số chữ số
n. - Tách từng chữ số, tính lũy thừa
n, cộng dồn. - So sánh tổng với số gốc.
Mã nguồn C
#include <stdio.h>
int power(int a, int b) {
int p = 1;
while (b--) p *= a;
return p;
}
int count(int n) {
int c = 0;
while (n) { c++; n /= 10; }
return c;
}
int perfect_number(int n) {
int x = count(n), sum = 0, rem;
while (n) {
rem = n % 10;
sum += power(rem, x);
n /= 10;
}
return sum;
}
int main() {
int n = 1634;
if (n == perfect_number(n))
printf("Là số Perfect Plus (Armstrong)\n");
else
printf("Không phải số Perfect Plus\n");
return 0;
}
Kết quả
Là số Perfect Plus (Armstrong)