本帖最后由 黑马--马超 于 2012-8-13 13:29 编辑
1.打印出所有水仙花数,所谓水仙花数是指一个3位数,其各位数字立方等于该数本身.例如,153是一个水仙花数,因为153=(1的3次方+5的三次方+3的三次方)
方法1:任意数与与10求余得到最低一位数,然后在除以10减去1位,重复做3次
我个人分析这道题的关键是能将3位数的每一位取出,然后计算后判断打印;
问题:1.我通过以下三种方法实现打印3位数的水仙花数,这三种方法哪一个效率比较高?
2.取出整数的每一位数最好的方法是什么,请提供一下简写的代码?
- import java.math.*;
- class Hello {
- publicstatic void main(String args[])
- {
- System.out.println("方法二一");
- for(inti=1;i<10;i++)
- {
- for(intj=0;j<10;j++)
- {
- for(intk=0;k<10;k++)
- {
- if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3)==i*100+j*10+k)
- System.out.println(i+""+j+""+k);
- }
- }
- }
- System.out.println("方法二:");
- for(inti=100;i<1000;i++)
- {
- inttemp1 =i%10;
- inttemp2 =(i/10)%10;
- inttemp3 =(i/100)%10;
- if(Math.pow(temp1,3)+Math.pow(temp2,3)+Math.pow(temp3,3)==i)
- System.out.println(i);
- }
- System.out.println("方法三:");
- String[] arr = new String [900];
- int num= 100;
- for(inti=0;i<arr.length;i++)
- {
- arr=(num++)+"";
- Integera = new Integer(arr.substring(0,1));
- Integerb = new Integer(arr.substring(1,2));
- Integerc = new Integer(arr.substring(2,3));
- if(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)==a*100+b*10+c)
- System.out.println(arr);
- }
- }
- }
复制代码 |