水仙花数 java for循环的问题!

让写一个
打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。* 例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方.* 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public class cs {
public static void main(String[] args) {
for(int i=100;i<=999;i++){
int a=i/100;
int b=i%100/10;
int c=i%10;
if(a*a*a+b*b*b+c*c*c==i){
System.out.println("水仙花数--->"+i);
}
}
}
}
答案是在网上搜索到的!并不是我写的!其中有些看不明白,搜索到的没有什么提示,我想问下!这个为什么是这样写的!
这个代码我只能看懂的是在一个范围内100-999之间的其中的三位数字,
然后往下的是分解这个数字各个位置上的百位,十位,各位!然后三个位置上的数字3次方加起来==i,循环到小于999就退出!得到的数字是
水仙花数是153
水仙花数是370
水仙花数是371
水仙花数是407
结果是我在测试得到的结果!不知道对不对!
我只是不理解为什么要这样算!求解!虽然是作业不会猜上网搜索下,但我是觉得得看会了才行!请教各位!谢谢!
所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。为什么是这样?

  水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
  (例如:1^3 + 5^3+ 3^3 = 153)

  创建工程,或使用已有工程,在工程下创建包,包内新建一个类,命名为Narcissistic类,根据自己喜好随便命名,但请保持类名与文件名一致。

  先写一个函数计算一个数字的立方为多少。命名为cube()

  private static int cube(int n) {
  return n * n * n;
  }

  判断这个数是不是水仙花数,求每一位数上的数的立方和是否为原数字本身。

  private static Boolean isNarcissistic(int number) {
  int hundreds = number / 100;
  int tens = number / 10 - hundreds * 10;
  int ones = number % 10;
  return cube(hundreds) + cube(tens) + cube(ones) == number;
  }

  

  写一个for循环来判断那些数字是水仙花数,并输出。
  for (int index = 100; index < 1000; ++index) {
  if (isNarcissistic(index))
  System.out.print(index + "\t");
  }
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-09
a=i/100是取到整数i的百位上的数字,举例来说就是,如果i=123,那么a就等于123/100=1,因为a和i都是int类型的,所以结果只取整数就得到了a=1;b=i%100/10,i%100是i除以100取余数,就是123%100得到的结果是23,之后再除以10同a一样得到整数i的十位上的数字,就是b=2;c=i%10,就是i除以10取余数,就得到了3,也就是整数i的个位上的数字,下面的if判断就是判断各个位上的数的立方和是否与这个数本身相等,如果相等,则输出这个数并换行
第2个回答  2011-04-09
首先有一点可以肯定是一个三位数,这个知道了,就例如是153,你仔细看看运算结果就知道a、b、c分别得到是1、5、3即百位、十位、个位,这个算分真的很精练,如果是我就会与10求商求余数,这样就会很麻烦了,真的是学到了新东西,谢谢。

"水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。*

一个三位数153,通过他的算法就分别得到1、5、3,然后各自立方和153比较是否相等,如果相等则输出,真的是妙.
第3个回答  2015-10-12
public  class  ShuiXian
{

public static void main(String[] args) 

{

//x用来临时保存百位十位和个位

int x=0,y=0,temp=0;





for(int i = 100;i<150;i++)

{

//System.out.println("i:" + i);

//temp=i;

x=i/100; // 取出百位   3      345

y=x*x*x;   //用y计数,得到了百位数的立方和。

//System.out.println("y_1:" + y);

i-=x*100;//  得到2位数  45



x=i/10;//取得十位上的数字4 

y+=x*x*x;  //把第二位数的立方和加上  y=9+64

//System.out.println("y_2:" + y);


i-=x*10;     //得到个位上的数

y+=i*i*i;

//System.out.println("y_3:" + y);


if(i==y)

{

System.out.println("temp:" + temp);

}


}


}
}

第4个回答  推荐于2016-08-27
水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。——这个是它的定义,没有说为什么
至于上述的程序,a=i/100 ,因为a为整数,因此取值范围0-9,取出数字 i 百位上的数字
;int b=i%100/10 ,同理b为整数,i%100后为个位与十位上组成的数,其取值范围0-99,再/10 取出数字 i 十位上的数字;
最后int c=i%10,取得个位上数字;
根据定义:if(a*a*a+b*b*b+c*c*c==i)判断每个位上的数字的n 次幂之和等于它本身追问

也就是说这个数的就是用这个公式算的!现在只需要给它的这些数给个代号,然后把公式写好,让它自己去算!算出来的数就是最后的结果,是这样吗?主要是数学学的不好!也不知道3次方是怎么算的!
还有这个应该是一个循环吧!每次算过后的数字,如果还能在往下算,继续算,算到小于999就退出!是这样吗?

追答

此题的条件为:找出100-999以内的水仙花数,所以就循环判断100-999以内符合的数,一直到小于等于999。至于3次方是怎么算的?简而言之,就是一个数乘以自身三次。
还有很多优化的算法,有兴趣可以再深入探究一下

本回答被提问者采纳

关于Java ,for循环,水仙花数
总之,本文通过Java语言编写了一个简单的程序,展示了如何通过编程逻辑来实现数学问题的求解,即找出所有水仙花数。通过循环遍历和基本的数学运算,我们成功地实现了这一目标。

java中for循环怎样打印出所有的"水仙花数"?
先写一个函数计算一个数字的立方为多少。命名为cube()private static int cube(int n) { return n * n * n;}判断这个数是不是水仙花数,求每一位数上的数的立方和是否为原数字本身即可。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,...

Java编程找出所有的水仙花数(水仙花数)。
1. 首先,“水仙花数”是指一个三位数,其各位数字立方和等于该数。例如:153是一个“水仙花数”,因为1的三次方+5的三次方+3的三次方等于153。2. 解此题的关键是如何从一个三位数中分离百位数、十位数、个位数。可以这样做:(1)百位数字a: `a = Math.floorDiv(i, 100)`(2)十位数字...

分别使用while、do-while和for语句编程,找出所有的水仙花数并输出。
x = i \/ 100;sum = x * x * x + y * y * y + z * z * z;if (sum == i) { System.out.println(sum + " 是水仙花数");} } } } ```2. 使用While语句找出所有的水仙花数并输出:```java public class DaffodilNumbers { public static void main(String[] args) { int...

输出100到999间的所有水仙花数,如何编写代码
```java public class DaffodilNumbers { \/ 打印100到999之间所有的水仙花数。水仙花数定义为三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3。程序分析:使用for循环遍历100至999的数,分解每个数的个位、十位和百位数字,并检验其是否为水仙花数...

用Java写个关于“水仙花数”的程序?
public class shuixianhua { public static void main(String[] args) { for (int i = 100; i <1000 ; i++) { int BaiNum = i\/100;\/\/分解出百位 int ShiNum = i\/10%10;\/\/分解出十位 int GeNum = i%10;\/\/分解出个位 \/\/判断是否为水仙花数,即百位的三次方+十位的三次方+个位的...

用java求100-999中的水仙花数,(若三位数abc,abc=a^3+b^3+c^3, 则称...
public static void main(String[] args) { \/\/第一种方法 \/*int m,a,b,c;for(int i=100;i<1000;i++){ m=i;c=m%10;b=(m\/10)%10;a=m\/100;if(m==a*a*a+b*b*b+c*c*c){ System.out.println("\\t"+m);} }*\/ \/\/第二种方法 int a,b,c,m;for(int i=1;i<=9...

在Java计算1-99999之间的水仙花数?有多少个?
\/\/水仙花数是指:一个三位数,其各位数字的立方和等于该数本身\/\/例如:153就是一个水仙花数。\/\/153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 public class ShuiXianHuaShu { public static void main(String[] args) { int count = 0; for (int i = 100; i < 1000...

3. 设计一个Java程序,输出所有的水仙花数。所谓水仙花数,是一个三...
java代码PS:最后运行的时候才发现只有4个水仙花数,自己可以尝试一下不会可以追问哦~public class Test { public static void main(String args[]) { int count=0;\/\/水仙花数个数计数器 for(int num=100;num<1000;num++) { int g=num%10;\/\/个位 int s=num\/10%10;\/\/十位 ...

用java 写程序,输入一个书,判断是否是水仙花树!
首先我想说明一下的是:水仙花数应该是三位数的吧!!!所以呢,循环控制变量我是从100开始的,到999结束(100-999)public class Example{ public static void main(String args[]){ for(int i=100; i<=999; i++){ int a=i\/100;int b=(i\/10)%10;int c=i%10;if(i==a*a*a+b*b*...

相似回答