Số Armstrong là gì? Cách Tìm Số Armstrong Trong C++ hay nhất 2023

Đánh giá bài này

Trong bài này chúng ta sẽ thực hiện chương trình tìm số Armstrong trong C++ cùng Tekmonk nhé. Qua bài tập này giúp các bạn biết thêm về số Armstrong là gì và cách hoạt đồng của nó.

Số Armstrong là gì?

Số Armstrong trong C++ là số có giá trị bằng tổng lập phương của các chữ số trong số đó. Ví dụ số Armstrong là: 0, 1, 2, 3, 153, 370, 407, 1634, 8208,…

Số Armstrong là gì?

Bài Toán: bạn sẽ học cách kiểm tra xem một số do người dùng nhập có phải là số Armstrong hay không.

Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình C ++ sau:

C ++ if, if … else và if … else
C ++ while và do … while Loop

Một số nguyên dương được gọi là số Armstrong (bậc n) nếu

abcd... = a^n + b^n + c^n + d^n + ...

Trong trường hợp số Amstrong có 3 chữ số, tổng các lập phương của mỗi chữ số bằng chính số đó. Ví dụ: 153 là số Armstrong vì

153 = 1*1*1 + 5*5*5 + 3*3*3

Ví dụ: Kiểm tra số Amstrong gồm 3 chữ số

#include <iostream>
using namespace std;

int main() {
    int num, originalNum, remainder, result = 0;
    cout << "Enter a three-digit integer: ";
    cin >> num;
    originalNum = num;

    while (originalNum != 0) {
        // remainder contains the last digit
        remainder = originalNum % 10;
        
        result += remainder * remainder * remainder;
        
        // removing last digit from the orignal number
        originalNum /= 10;
    }

    if (result == num)
        cout << num << " is an Armstrong number.";
    else
        cout << num << " is not an Armstrong number.";

    return 0;
}

Output

Enter a positive integer: 371
371 is an Armstrong number.

Chương trình lặp qua vòng lặp while cho đến khi originalNum bằng 0.

remainder = originalNum % 10;        
result += remainder * remainder * remainder;

Và, chữ số cuối cùng bị xóa khỏi orignalNum.

Khi vòng lặp kết thúc, kết quả là tổng khối của chữ số riêng lẻ được lưu trữ.

Ví Dụ 2: Kiểm tra số Armstrong gồm n chữ số

#include <cmath>
#include <iostream>

using namespace std;

int main() {
   int num, originalNum, remainder, n = 0, result = 0, power;
   cout << "Enter an integer: ";
   cin >> num;

   originalNum = num;

   while (originalNum != 0) {
      originalNum /= 10;
      ++n;
   }
   originalNum = num;

   while (originalNum != 0) {
      remainder = originalNum % 10;

      // pow() returns a double value
      // round() returns the equivalent int
      power = round(pow(remainder, n));
      result += power;
      originalNum /= 10;
   }

   if (result == num)
      cout << num << " is an Armstrong number.";
   else
      cout << num << " is not an Armstrong number.";
   return 0;
}

Output

Enter an integer: 1634
1634 is an Armstrong number.

trong chương trình này, số chữ số của số đã nhập được tính đầu tiên và được lưu trữ trong n.

Và, hàm pow () tính lũy thừa của các chữ số riêng lẻ trong mỗi lần lặp của vòng lặp while.

Như vậy là chúng ta đã thực hiện xong chương trình kiểm tra số Armstrong. Chúc các bạn thực hiện thành công!!!

Xem thêm:

Để lại bình luận