黑马程序员技术交流社区
标题: 打印100-999之间的水仙花数? [打印本页]
作者: 黄诗宾 时间: 2013-3-19 18:42
标题: 打印100-999之间的水仙花数?
本帖最后由 黄诗宾 于 2013-3-19 19:01 编辑
打印出100-999之间所有的"水仙花数"。
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
求解题思路及代码。主要是丝路 看不大懂 谢谢各位大大!!
作者: 杨博 时间: 2013-3-19 18:47
- /*
- 需求:求出所有的水仙花数 使用 循环+条件
- 分析:水仙花数是三位数 它的特点 153=1x1x1+5x5x5+3x3x3
- 使用方法完成下面的功能:
- 100~999的数中,百位上的数的三次方+十位上的数的三次方
- +个位上的数的三次方=数值的值,则此数为水仙花
- 能够求出水仙花的个数
- */
- class Test2
- {
- public static void main(String[] args)
- {
- int [] arr=new int[900];
- fillNum(arr);
- int count=getCount(arr);
- System.out.println(count);
- }
- //将所有三位数顺序放入数组中
- public static void fillNum(int [] arr)
- {
- int num=100;
- for(int i=0;i<arr.length;i++)
- {
- arr[i]=num;
- num++;
-
- }
- }
- //得到水仙花的个数
- //参数:存储100~999的数组
- //返回值:得到水仙花的个数
- public static int getCount(int [] arr)
- {
- int count=0;
- for(int i=0;i<arr.length;i++)
- {
- int x=(arr[i]/100)%10;//得到百位数
- int y=(arr[i]/10)%10;//得到十位数
- int z=arr[i]%10;//得到个位数
- if(arr[i]==x*x*x+y*y*y+z*z*z)
- {
- System.out.println(arr[i]);
- count++;
- }
-
- }
- return count;
- }
- }
复制代码 首先遍历100~999所有数,然后按照水仙花的规则,求出每一位数,每位数三次方再相加,得到的值是不是和本来的值相等,相等就打印出来
作者: 张宝 时间: 2013-3-19 18:53
/*
.求出所有的水仙花数 使用 循环+条件
水仙花数是三位数 它的特点 153=1x1x1+5x5x5+3x3x3
*/
class Test
{
public static void main(String[] args)
{
int a, b, c, d, i = 0;
System.out.print("你要找的水仙花数为: ");
for (a = 100; a < 1000; a++)
{
b = a / 100; c = (a / 10) % 10; d = a % 100 % 10;
if (a == b * b * b + c * c * c + d * d * d)
{
System.out.print(a+",");
i++;
}
}
System.out.println("你找的水仙花个数为:" + i);
}
}
作者: 黄诗宾 时间: 2013-3-19 19:01
O了 谢谢
作者: 黑马17期-闫东东 时间: 2013-3-19 19:19
穷举思想,把所有的三位数都遍历出来,符合条件的打印
public static void method1(){
for(int i=100;i<1000;i++){
//i就代表每一个三位数
int a1=i/100;
int a2=i/10%10;
int a3=i%10;
if(a1*a1*a1+a2*a2*a2+a3*a3*a3==i){
System.out.println(i);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |