本文主要是介绍实现指定位数内的阿姆斯壮数的查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*** 阿姆斯壮数 在三位的整数中,例如153可以满足1^3 + 5^3 + 3^3 = 153,这样的数称之为Armstrong数,
阿姆斯壯數有88個,最大為39位數的115132219018763992565095597973971522401,已證實超過39位數不存在阿姆斯壯數。
*
* @param args
*/
public static void main(String[] args) {
System.out.println(Armstrong(8).toString());
}
public static ArrayList<Integer> Armstrong(int number) {
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 1; i < Math.pow(10, number); i++) {
if (Sum(i) == i) {
arrayList.add(i);
}
}
return arrayList;
}
public static int Sum(int number2) {
int count = 0;
//注意此处的不能把条件写为number2 % 10 ,因为会出现中间数字为零的情况
while (number2 / 10 != 0) {
count += (int) Math.pow(number2 % 10, 3);
number2 = number2 / 10;
}
//加上最后一次的结果
return count +(int) Math.pow(number2 /Math.pow(10, String.valueOf(number2).length() - 1),3);
}
这篇关于实现指定位数内的阿姆斯壮数的查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!