java编程 1到1000的水仙花数 求教
发布网友
发布时间:2022-05-02 18:36
我来回答
共3个回答
热心网友
时间:2022-06-21 06:28
所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如: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());
}
}
热心网友
时间:2022-06-21 06:28
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之间的水仙花数
热心网友
时间:2022-06-21 06:29
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);
}
}
}
}