Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để kiểm tra số Armstrong

Số Amstrong là một số mà tổng các chữ số được nâng lên thành lũy thừa của tổng các chữ số bằng một số. Một số ví dụ về số Armstrong như sau.

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

Chương trình kiểm tra một số có phải là số Armstrong hay không như sau.

Ví dụ

#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;
}

Đầu ra

153 is an Armstrong number

Trong chương trình trên, nó được xác định xem số đã cho có phải là số Armstrong hay không. Điều này được thực hiện bằng nhiều bước. Đầu tiên số chữ số trong số được tìm thấy. Điều này được thực hiện bằng cách thêm một vào digitNum cho mỗi chữ số.

Điều này được chứng minh bằng đoạn mã sau -

temp = num;
digitNum = 0;
while (temp != 0) {
   digitNum++;
   temp = temp/10;
}

Sau khi đã biết số chữ số, thì Số lượng chữ số được tính bằng cách cộng từng chữ số được nâng lên thành lũy thừa của Số chữ số, tức là số chữ số. Bạn có thể thấy điều này trong đoạn mã sau.

temp = num;
digitSum = 0;
while (temp != 0) {
   remainderNum = temp%10;
   digitSum = digitSum + pow(remainderNum, digitNum);
   temp = temp/10;
}

Nếu số đó bằng chữ sốSum, thì số đó là số Armstrong và được in ra. Nếu không, thì nó không phải là số Armstrong. Điều này được thấy trong đoạn mã bên dưới.

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