如下代码:
- package test;
- import java.util.ArrayList;
- import java.util.List;
- /**
- *
- 各个位上的数字的立方和等于其数值本身
- 153
- 1^3=1 5^3 = 125 3^3=27
- 水仙花数及统计其个数
-
- * @author java-dream
- *
- */
- public class Test2 {
-
- //该题对数值的范围没有限制,设以3位数范围内吧
- public static void main(String[] args){
- //初始数值
- Integer number = 100;
- //用于存放符合条件的数值
- List<Integer> numBarrel = new ArrayList<Integer>();
-
- //如果数值是3位数,则进行判断是否符合条件;否则终止循环
- while(number<1000){
- int n = 1;
- int index = 0;
- //用于存放number数值各个位的数
- int[] barrel = new int[3];
-
- while(number/n>=1){
- //获取number数值各个位的数,并保存到barrel数组
- barrel[index++] = (number/n)%10;
- n *= 10;
- }
-
- //求得各个位的数的立方,并相加
- int sum = 0;
- for(int i=0; i<barrel.length; i++){
- sum += barrel[i]*barrel[i]*barrel[i];
- }
-
- //各个位上的数字的立方和等于其数值本身,将该number保存
- if(sum==number){
- numBarrel.add(number);
- }
-
- number++;
- }
-
- System.out.println("水仙花数为:"+numBarrel);
- System.out.println("总共有:"+numBarrel.size()+"个");
- }
- }
复制代码
运行结果:
- 水仙花数为:[153, 370, 371, 407]
- 总共有:4个
复制代码 |