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之间的水仙花数
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以内的“水仙花数”、并且结果偶数输出奇数不输出、求大神速度指教、拜托了🙏