java编程 1到1000的水仙花数 求教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java编程 1到1000的水仙花数 求教相关的知识,希望对你有一定的参考价值。

所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。代码如下

public class Shuixianhua 

/**
 * 判断数字是否是水仙花数
 * @Title: shuixianhua 
 * @param:@param x
 * @param:@return
 * @return:boolean
 * @Description:
 * @date 2017年11月2日 下午3:03:10
 * @throws
 */
 public boolean shuixianhua(int x)  
      
       int i=0,j=0,k=0;  
       i=x / 100;  
       j=(x % 100) /10;  
       k=x % 10;  
       if(x==i*i*i+j*j*j+k*k*k)  
           return true;  
       else  
           return false;  
         
    
 
 public static void main(String[] args) 
 //存放所有水仙花数的集合
List<Integer> sxhList=new ArrayList<Integer>();
Shuixianhua sxh=new Shuixianhua();
for(int i=1;i<=1000;i++)
//判断是否是水仙花数,是则放入集合
if(sxh.shuixianhua(i))
sxhList.add(i);



//打印所有水仙花数
System.out.println(sxhList.toString());

参考技术A public static void main(String[] args) 
 int x = 0;        //定义水仙花数的个数
         for(int i=1;i<=1000;i++)
             int b = i/100;        //取得百位数
             int s = (i-100*b)/10;        //取得十位数
             int g = (i-s*10-b*100);        //取得个位数
              
             if(i==g*g*g+s*s*s+b*b*b)
                 x++;    //每次符合水仙花数条件,则x+1;
                 System.out.print(i+" ");    //输出符合条件的数
         
         System.out.println();        //换行
         System.out.println("水仙花数总共有"+x+"个");    //输出水仙花数的总数
     

追问

取得十位那里不是很懂

追答

分析:水仙花数是指:一个三位数,其各位数字立方和等于该数本身。例如:370=33+73+00.这就说明370是一个水仙花数。
所以要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位。这里我由一下几种方法:
1:
先取得他的百位:int BaiWei = x/100; 因为int是整形,所以不会进行四舍五入,也不会管小数点后面的数。
再取得十位:int ShiWei = (x-BaiWei*100)/10;先用这个数减去百位数*100,再除以10,原因同上。
最后取得个位数:int GeWei = x-BaiWei*100-ShiWei*10.很明显,就能得到个位数。
实际上你这个题应该取的是100~999之间的水仙花数

本回答被提问者和网友采纳
参考技术B class Tester
public static void main(String[] args)
for (int i = 1; i < 1001; i++)
String tmp = i + "";
String[] arr = tmp.split("");
int sum = 0;
for (int j = 0; j < arr.length; j++)
sum += Math.pow(Integer.parseInt(arr[j]), arr.length);

if (sum == i)
System.out.println(i);



以上是关于java编程 1到1000的水仙花数 求教的主要内容,如果未能解决你的问题,请参考以下文章

编程输出1000以内的所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于其本身

c语言1000以内的水仙花数

用c语言编程1000以内的“水仙花数”、并且结果偶数输出奇数不输出、求大神速度指教、拜托了🙏

C语言,编程打印,1000以内所有的水仙花数,所谓水仙花数是指一个三位数,其个位数字立方和等于该数

大一c语言求水仙花数

如何用VB语言求水仙花数和求1~1000以内的素数