Tìm Số Armstrong Trong C++

212 lượt xem Lập Trình C/C++
Tìm Số Armstrong Trong C

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ữ.

Tìm Số Armstrong Trong C
Tìm Số Armstrong Trong C

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

PHP Code Snippets Powered By : XYZScripts.com
.
.
.
.