จำนวนเต็มจะถูกเรียกว่าเลขอาร์มสตรอง (Armstrong number) ของออเดอร์ n หากแยกตัวเลขแต่ละหลักแล้วยกกำลังสามและบวกกัน ผลรวมจะเท่ากับตัวเลขเดิม คือ abcd... = a3 + b3 + c3 + d3 + ...
ในกรณีของเลขอาร์มสตรอง 3 หลัก ผลรวมของกำลังสามของแต่ละหลักจะเท่ากับตัวเลขเอง ตัวอย่างเช่น:
153 = 13 + 53 + 33 // 153 เป็นเลขอาร์มสตรอง
Input: Enter two numbers(intervals): 999 9999 Output: Armstrong numbers between 999 and 9999 are: 1634 8208 9474
คำอธิบาย
1634 = 13+63+33+43 = 1+216+27+64 = 1634
วิธีการที่นำไปใช้งานด้านล่างนี้เรียบง่าย เราวนลูปผ่านตัวเลขทั้งหมดในช่วงที่กำหนด สำหรับแต่ละตัวเลข เรานับจำนวนหลักก่อน ให้จำนวนหลักของตัวเลขปัจจุบันเป็น n จากนั้นหาผลรวมของกำลังสามของทุกหลัก หากผลรวมเท่ากับตัวเลขนั้น เราจะพิมพ์ตัวเลขนั้นออกมา
ตัวอย่างโค้ด C
#include <stdio.h>
#include <math.h>
int main() {
int low = 100;
int high = 400;
printf("The amstrong numbers between %d and %d is \n", low, high);
for (int i = low + 1; i < high; ++i) {
int x = i;
int n = 0;
while (x != 0) {
x /= 10;
++n;
}
int pow_sum = 0;
x = i;
while (x != 0) {
int digit = x % 10;
pow_sum += pow(digit, n);
x /= 10;
}
if (pow_sum == i)
printf("%d ", i);
}
printf("\n");
return 0;
}