34

3水仙花数

package com.test;
import java.math.*;
public class test333 {

/**
* @param args
* 【程序3】 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//怎么算次方,立方, a*a*a这样写太累了;
//发现math.pow(5,6);//表示求5的6次方;
System.out.println((int) Math.pow(3, 3));//缺点是这个方法返回的是double类型,平时用的是int多一些,就强转了,可能有bug;
/*
if(math.pow(x,y)>Integer.MaxValue()){
如果次方算出来大于int的最大值,那可能只能用double了;
Double do...;
}
*/
// int ss = 101;//这方法是用 11/10=1(int返回整数的,会把小数丢失的bug)的方法取整;
// System.out.println(123/100);//百分位
// System.out.println((123-123/100*100)/10);//十分位
// System.out.println(123-(123/100*100)-(123-123/100*100)/10*10);//个位
System.out.println(1234%1000);//234
System.out.println(1234%100);//34
System.out.println("个位数:"+1234%10);//4(这样就很容易取到个位数了)
System.out.println("十位数:"+1234%100/10);//3 (这是中间位数的取法)
System.out.println("百位数:"+1234%1000/100);//2
System.out.println("千位数:"+1234/1000);//1(这样就很容易取到最高位数了)

for(int i=100;i<=999;i++){
int cc = isShuiXianHuaShu(i);
int cccc = isShuiXianHuaShu2(i);
int cccccc = isShuiXianHuaShu3(i);
}
for(int i=1000;i<=9999;i++){
int dd = isDD(i);
}
}
private static int isShuiXianHuaShu3(int x) {
// TODO Auto-generated method stub
//这里是用的模运算,取模(整除,取余数,类似于去掉最高整数部分,取其他位数)的方法.
int i=0,j=0,k=0;

i=x / 100;//123/100=1;

j=(x % 100) /10;//(123%100)/10=23/10=2

k=x % 10;//123%10=3

if(x==i*i*i+j*j*j+k*k*k){
System.out.println(x+"是水仙花数");return x;}
else{
return 0;
}
}
private static int isDD(int i) {
// TODO Auto-generated method stub 1+1296+81+256=1296+338=1634=1634;
int a,b,c,d;
a=b=c=d=0;
a = Integer.parseInt(String.valueOf(i).substring(0,1));
b = Integer.parseInt(String.valueOf(i).substring(1,2));
c = Integer.parseInt(String.valueOf(i).substring(2,3));
d = Integer.parseInt(String.valueOf(i).substring(3,4));
if(i == (a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)){
System.out.println("333333'"+i+"' 是一个金字塔数");
}
return 0;
}
public static int isShuiXianHuaShu(int x){
int a,b,c;
a=b=c=0;
a = x/100;
b = (x-x/100*100)/10;
c = (x-x/100*100-(x-x/100*100)/10*10);
if(x==(a*a*a+b*b*b+c*c*c)){
System.out.println("1111111'"+x+"' is a ShuiXianHuaShu");
}else{
// System.out.println("'"+x+"' is not a ShuiXianHuaShu");
}
return x;
}
public static int isShuiXianHuaShu2(int x){
int a,b,c;
a=b=c=0;
a = Integer.parseInt(String.valueOf(x).substring(0, 1));
b = Integer.parseInt(String.valueOf(x).substring(1, 2));
c = Integer.parseInt(String.valueOf(x).substring(2,3));
if(x==(a*a*a+b*b*b+c*c*c)){
System.out.println("2222222'"+x+"' is a ShuiXianHuaShu");
}else{
// System.out.println("'"+x+"' is not a ShuiXianHuaShu");
}
return x;
}

}

posted on 2017-07-04 16:49  小确幸~  阅读(328)  评论(0编辑  收藏  举报

导航