水仙花

/*---循环练习---*/
//练习1. 获取一个3位数   
// 的百位 十位  个位   上的数字
// int num = 456;
/* 
num/100  
num%100/10
num%10
*/


//练习2. 获取一个给定的任意正整数  n位
//       的各个 位上的数字

//问题3. 求一个整数 10 的多少次方
//       3^5 = 3*3*3*3*3
//      2^-1.5

//幂运算
// System.out.println(Math.pow(2, 0.5));


/*
1 num2%10^n      /10^(n-1)
2 num2%10^(n-1)  /10^(n-2)
3 num2%10^(n-2)  /10^(n-3)
4 num2%10^(n-3)  /10^(n-4)
...
n num2%10^(n-(n-1)) /10^(n-n)
 
通项式: num2%10^(n-(i-1)) /10^(n-i)
 
*/
// int num2 = 789612;
// int n=6; 
//
// //i=1 表示最高为  依次向右
// for(int i=1;i<=n;i++){
// //求  pow 10^(n-i)
// int pow = 1;
// for(int j=1;j<=n-i;j++){
// pow*=10;
// }
//
// int result = num2%(pow*10)  /pow;
// System.out.println(result);
// }


//练习:判定一个数是否是 水仙花数
//   abc = a^3+b^3+c^3
//   123 =? 1^3 2^3 3^3

//   tmp=0  
//   获取n的每一位  
//      tmp += 每一位的3次方
//   tmp ==? n

// int num = 123;
// int n = 3;
// int tmp = 0;
// //从最高位到最低位遍历  num
// for(int i=1;i<=n;i++){
// //取出当前位的值 v - num%10^(n-(i-1)) /10^(n-i)
// int pow = (int) Math.pow(10, n-i);
// int v = num%(pow*10) / pow;
//
// //求v的三次方               
// //tmp += v^3 
// tmp += v*v*v;
// }
//
// //判定 tmp 是否等于 num
// if(tmp == num){
// System.out.println("是水仙花数");
// }



//练习 :找出所有的水仙花数 
//         最大/最小
for(int k=999; k>=100;k--){
//判定k是否是水仙花数
int n = 3;
int tmp = 0;
//从最高位到最低位遍历  num
// for(int i=1;i<=n;i++){
// //取出当前位的值 v - num%10^(n-(i-1)) /10^(n-i)
// int pow = (int) Math.pow(10, n-i);
// int v = k%(pow*10) / pow;
//
// //求v的三次方               
// //tmp += v^3 
// tmp += v*v*v;
// }

//==简单方法 ==直接求3位数的各个位的值
int a = k/100;
int b = k/100%10;
int c = k%10;

tmp = a*a*a + b*b*b + c*c*c;

//判定 tmp 是否等于 num
if(tmp == k){
System.out.print(k+"  ");
break;
}

}



}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值