问题描述
打印所有的“水仙花数”:满足以下条件:一,“水仙花数”都是三位数;二,每位数的三次方之和正好等于这个数,例:153=1*1*1+5*5*5+3*3*3PS:本人为JAVA刚入门菜鸟,希望前辈们赐教,谢谢。
解决方案
解决方案二:
intm,a,b,c;for(m=100;m<=999;m++){a=m/100;b=m/10%10;c=m%10if(m=a*a*a+b*b*b+c*c*c){System.out.printf("%d",m);}}
解决方案三:
inti=Integer.MAX_VALUE;for(intj=0;j<=i;j++){ints=j;intsum=0;while(s!=0){sum=(s%10)*(s%10)*(s%10);s/=10;}if(sum==j)System.out.println(j);}
解决方案四:
引用1楼yewuqing007的回复:
Javacodeintm,a,b,c;for(m=100;m<=999;m++){a=m/100;b=m/10%10;c=m%10if(m=a*a*a+b*b*b+c*c*c){System.out.printf("%d",m);}}
这位仁兄的算法已经很简洁了,不过有点小错误,条件语句里面的比较符号应该是“==”,这位仁兄写成赋值符号了。另外,你学过其他的语言么?这不是纯java啊,这就是一个算法啊,用c或者c++都可以实现啊你是不是像弄清楚java编程的具体格式?
解决方案五:
引用2楼wyang1991的回复:
inti=Integer.MAX_VALUE;for(intj=0;j<=i;j++){ints=j;intsum=0;while(s!=0){sum=(s%10)*(s%10)*(s%10);s/=10;}if(sum==j)System.out.println(j);}
这位仁兄是不是想把所有的满足那个条件的数全部找出来?如果按照楼主的要求,这个算法已经很多余了啊,何必多运算那么多次呢?另外,while循环里面的sum=(s%10)*(s%10)*(s%10)应该是sum+=(s%10)*(s%10)*(s%10);否则你找出来的答案肯定是错误的
解决方案六:
这是我平时记的一些常见算法、、希望对你有帮助、、、问题:水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3×3×3+7×7×7+0×0×0=370,请输出所有的水仙花数。该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。实现思路:循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断3个数字的立方和是否等于自身。则实现的代码如下所示:for(inti=100;i<1000;i++){//循环所有三位数inta=i%10;//个位数字intb=(i/10)%10;//十位数字intc=i/100;//百位数字//判断立方和等于自身if(a*a*a+b*b*b+c*c*c==i){System.out.println(i);}}在该代码中,拆分个位数字使用i和10取余即可,拆分十位数字时首先用i除以十,去掉个位数字,并使原来的十位数字变成个位,然后和10取余即可,因为i是一个三位数,所以i除以100即可得百位数字,因为这里都是整数除法,不存在小数的问题。然后只需要判断立方和是否等于自身即可。注意:因为i是循环变量,这里不能改变i的值,不然可能造成死循环。完整程序:publicclassnarcissus{publicstaticvoidmain(String[]args){for(inti=100;i<1000;i++){//循环所有三位数inta=i%10;//个位数字intb=(i/10)%10;//十位数字intc=i/100;//百位数字//判断立方和等于自身if(a*a*a+b*b*b+c*c*c==i){System.out.println(i);}}}}
解决方案七:
while(i<1000){j=i/100;k=(i-j*100)/10;l=i%10;if((Math.pow(j,3)+Math.pow(k,3)+Math.pow(l,3))==i)System.out.println(i+"是水仙花数");i++;}
解决方案八:
publicclassdaffodil{publicstaticvoidmain(String[]args){inti,a,b,c;System.out.println("1000内的水仙花数:");for(i=100;i<1000;i++){a=i/100;b=(i/10)%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c){System.out.print(i+"");}}}}
解决方案九:
该回复于2011-03-14 09:04:34被版主删除
解决方案十:
好了我也不说了ls的都回答了--------
解决方案十一:
好了我也不说了ls的都回答了--------
解决方案十二:
好了我也不说了ls的都回答了--------
解决方案十三:
好了我也不说了ls的都回答了--------
解决方案十四:
这个不难吧?publicstaticvoidmain(Stringargs[]){inta,b,c,d,num=0;for(inti=101;i<1000;i++){a=i/100;b=i/10-a*10;c=i%10;d=a*a*a+b*b*b+c*c*c;if(i==d){num++;System.out.println("水仙花数"+num+":"+i);}}}
解决方案十五:
多思考一下应该可以解决的。
解决方案:
其实你上google搜索下就行。
解决方案:
非常感谢大家这是小弟第一次发帖求问懂了懂了。。谢谢
解决方案:
這老多算法.你要在不明白就笨了