Cho số n nhập từ người dùng, kiểm tra có phải số Armstrong hay không.
Số Armstrong là khi tổng các chữ số lũy thừa theo số chữ số (cấp số) bằng chính số đó.
Biểu diễn đơn giản:

Công thức:
wxyz... = pow(w, n) + pow(x, n) + pow(y, n) + pow(z, n) + ...
Thuật toán
BAT DAU
Bước 1: Khai báo hàm tính lũy thừa
int power(int a, int b)
vòng lặp while b>0
power = power * a
b--
kết thúc vòng lặp
trả về power
Bước 2: Khai báo hàm đếm số chữ số
int count(int n)
i = 0
while n != 0
i++
n = n / 10
trả về i
Bước 3: Hàm kiểm tra Armstrong
int armstrong(int n)
x = count(n)
rem = 0, m = 0
while n
rem = n % 10
m = m + power(rem, x)
n = n / 10
trả về m
Bước 4: main
n = 1634
nếu n == armstrong(n) in "la so Armstrong"
else in "khong phai so Armstrong"
KET THUC
Ví dụ
#include <stdio.h>
int power(int a, int b) {
int power = 1;
while (b > 0) {
power *= a;
b--;
}
return power;
}
int count(int n) {
int i = 0;
while (n != 0) {
i++;
n = n / 10;
}
return i;
}
int armstrong(int n) {
int x = count(n);
int rem = 0, m = 0;
while (n) {
rem = n % 10;
m += power(rem, x);
n /= 10;
}
return m;
}
int main(int argc, char const *argv[]) {
int n = 1634;
if (n == armstrong(n)) {
printf("%d la so Armstrong\n", n);
} else
printf("%d khong phai so Armstrong\n", n);
return 0;
}
Kết quả
1634 la so Armstrong