C++ 程序 在两个整数间查找阿姆斯特朗数

C++ 程序 在两个整数间查找阿姆斯特朗数

如果满足以下条件,则称具有数字a、b、c、d…的正整数为 n 阶阿姆斯特朗数。

abcd... = an + bn + cn + dn +...

153 = 111 + 555 + 333

​ = 1 + 125 + 27
​ = 153

因此,153是阿姆斯特朗数。

示例:

输入: 100 400
输出: 153 370 371
解释: 给定两个整数为 100 和 400(区间)
153 = 111 + 555 + 333
= 1 + 125 + 27
= 153

370 = 333 + 777 + 0
= 27 + 343
= 370
371 = 333 + 777 + 111
= 27 + 343 +1
= 371

下面实现的方法很简单。我们遍历给定范围内的所有数字。对于每个数字,首先计算其位数。假设当前数字的位数为 n。然后我们计算其所有数字的 n 次幂的和。如果这个和等于该数字本身,我们就打印这个数字。

// C++ program to find Armstrong 
// numbers in a range
#include <bits/stdc++.h>
using namespace std;
  
// Prints Armstrong Numbers in a 
// given range
void findArmstrong(int low, int high)
{
    for (int i = low+1; i < high; ++i) 
    {
        // Number of digits calculation
        int x = i;
        int n = 0;
        while (x != 0) 
        {
            x /= 10;
            ++n;
        }
  
        // Compute sum of nth power of 
        // its digits
        int pow_sum = 0; 
        x = i;
        while (x != 0) 
        {
            int digit = x % 10;
            pow_sum += pow(digit, n);
            x /= 10;
        }
  
        // Checks if number i is equal 
        // to the sum of nth power of 
        // its digits
        if (pow_sum == i) 
            cout << i << " ";     
    }
}
  
// Driver code
int main()
{
    int num1 = 100;
    int num2 = 400;
    findArmstrong(num1, num2);
    cout << '';
    return 0;
}  

输出:

153 370 371

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例