for (int i = 100; i < 1000; i++) {
int ge =i%10;
int shi=i/10%10;
int bai=i/10/10%10;
if (ge*ge*ge+shi*shi*shi+bai*bai*bai==i) {
System.out.println(i);
}
}
}
} 作者: 75100313 时间: 2014-1-9 16:00
package com.mth.test;
public class NarcissisticNumber
// 水仙花数
{
public static void main(String[] args) {
for (int n = 100; n < 1000; n++) {
// x代表百位 y代表十位 z代表个位
// 比如 拿数字 153 举例子
// 当 n循环到153
int x, y, z;
x = n / 100; // x=153/100 此时x=1
y = (n - x * 100) / 10;// y=(153-1*100)/10=53/10 此时 y=5
z = n - x * 100 - y * 10;// z=153-1(百位)*100-5(十位)*10 此时剩下的就是个位 z =3
if (n == x * x * x + y * y * y + z * z * z) { // 拿到了 百位,个位,十位
// 那么判断水仙花成立的条件
// 满足条件的话 就打印
System.out.println("1--10000之间的水仙花数为" + n);
}
}
}
}
复制代码
作者: 铁矫狮情子 时间: 2014-1-9 16:13
/*水仙花数就是个位+十位+百位=这个数
个位:x%10
十位:x/10%10
百位:x/10/10%10
*/
public class Test {
public static void main(String[] args) {
for (int x = 100; x <=999; x++) {
int ge =x%10;//个位上的数
int shi=x/10%10;//十位上的数
int bai=x/10/10%10;//百位上的数
if (ge*ge*ge+shi*shi*shi+bai*bai*bai==x) {//个位十位百位加起来等于这个数
System.out.println(x);
}
}
}
}作者: 姬运涛 时间: 2014-1-17 09:50
/*
判断100到1000内的水仙花数;
首先一个数判断是否是水仙花;
一个数的每个位的立方和等于这个数,那么他就是水仙花;
然后循环判断每一个数;
*/
public class NarcissisticNumber //水仙花数{
public static void main(String[] args)
{
for (int n = 100 ;n <1000 ;n++ )
{
int x,y,z;
x = n/100;//求得百位上的数
y = (n-x*100)/10;//求得十位上的数
z = n-x*100-y*10;//求得个位上的数
if (n == x*x*x+y*y*y+z*z*z )//判断循环中每个数是否为水仙花,如果是则打印水仙花
{
System.out.println ("1--10000之间的水仙花数为"+ n);
}
}
}
} 作者: 月生春 时间: 2014-1-17 12:21
我觉得要打印一个水仙花数,就要定义一个方法用来打印你传入的数内的所有水仙花数!而不是你确定了0到1000内的所有水仙花数,然后
/**个位:x%10
* 十位:x/10%10
百位:x/10/10%10
*/
这样只能解决你一时的要求,如果是打印 一亿以内的所有水仙花数, 是否每个位都要整除10呢?