หมายเลขอาร์มสตรองคือตัวเลขที่ผลรวมของหลักที่ยกกำลังของจำนวนหลักทั้งหมดเท่ากับตัวเลข ตัวอย่างตัวเลขของ 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";