PHP程序员面试算法宝典
上QQ阅读APP看书,第一时间看更新

1.5 怎样才能得到阿姆斯壮数

难度系数:★★☆☆☆

被考查系数:★★★☆☆

题目描述:

在三位整数中,如153可以满足13+53+33=153,这样的数被称为Armstrong(阿姆斯壮)数,试写出一程序找出所有的三位数Armstrong数。

分析与解答:

方法一:遍历三位数求解

阿姆斯壮数的寻找,其实是将一个数字分解为个位数、十位数、百位数……,只要使用除法与余数运算即可求解出个十百位的数,例如,输入一个数字为abc,则:

百位:a=floor(input/100)

十位:b=floor((input%100)/10)

个位:c=input%10

实现代码如下:

程序的运行结果为

方法二: 穷举数求解

利用for循环控制100~999个数,每个数分解出个位、十位、百位。利用循环,分别用i代表百位,j代表十位,m代表个位,且百位的初始数值是1~9,而十位和个位初始数值是0~9,然后按百位、十位、个位的顺序嵌套循环,找出符合阿姆斯壮数公式的数,找出符合条件的阿姆斯壮数。

实现代码如下:

程序的运行结果为