หมายเลขอาร์มสตรองคือตัวเลขที่ผลรวมของหลักที่ยกกำลังของจำนวนหลักทั้งหมดเท่ากับตัวเลข ตัวอย่างตัวเลขของ Armstrong มีดังนี้
3 = 3^1 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153 371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1 = 371 407 = 4^3 + 0^3 + 7^3 = 64 +0 + 343 = 407
โปรแกรมเช็คเลขว่าเป็นเลขอาร์มสตรองหรือไม่ มีดังนี้
ตัวอย่าง
#include <iostream>
#include <cmath<
using namespace std;
int main() {
int num = 153, digitSum, temp, remainderNum, digitNum ;
temp = num;
digitNum = 0;
while (temp != 0) {
digitNum++;
temp = temp/10;
}
temp = num;
digitSum = 0;
while (temp != 0) {
remainderNum = temp%10;
digitSum = digitSum + pow(remainderNum, digitNum);
temp = temp/10;
}
if (num == digitSum)
cout<<num<<" is an Armstrong number";
else
cout<<num<<" is not an Armstrong number";
return 0;
} ผลลัพธ์
153 is an Armstrong number
ในโปรแกรมข้างต้นจะกำหนดว่าหมายเลขที่กำหนดเป็นหมายเลขอาร์มสตรองหรือไม่ ทำได้โดยใช้หลายขั้นตอน ขั้นแรกพบจำนวนหลักในตัวเลข ทำได้โดยการเพิ่มหนึ่งไปยัง digitNum สำหรับแต่ละหลัก
สิ่งนี้แสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้ -
temp = num;
digitNum = 0;
while (temp != 0) {
digitNum++;
temp = temp/10;
} หลังจากที่ทราบจำนวนหลักแล้ว digitSum จะถูกคำนวณโดยการบวกแต่ละหลักยกกำลังของ digitNum เช่น จำนวนหลัก ซึ่งสามารถเห็นได้ในข้อมูลโค้ดต่อไปนี้
temp = num;
digitSum = 0;
while (temp != 0) {
remainderNum = temp%10;
digitSum = digitSum + pow(remainderNum, digitNum);
temp = temp/10;
} หากตัวเลขเท่ากับ digitSum แสดงว่าตัวเลขนั้นเป็นหมายเลข Armstrong และพิมพ์ออกมา ถ้าไม่อย่างนั้นก็ไม่ใช่หมายเลขอาร์มสตรอง ซึ่งเห็นได้ในตัวอย่างโค้ดด้านล่าง
if (num == digitSum) cout<<num<<" is an Armstrong number"; else cout<<num<<" is not an Armstrong number";