水仙花数简单实现
public class ShuiXianHua {
public static void main(String[] args) {
//判断水仙花数(370);
//水仙花();
RandomSize2(3);
}
private static void 判断水仙花数(int n) {
System.out.print("请输入一个100~999之间的整数:");
if(n>=100) {
int a=n%10; //个位
int b=n/10%10;//十位
int c=n/100; //百位
// Math.pow(a,b) 返回 a 的 b次方
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==n) {
System.out.println("该数字是水仙花数");
}else {
System.out.println("该数字不是水仙花数");
}
}
}
// 输出所有的水仙花数
public static void 水仙花() {
int count = 0;
for (int i = 100; i < 1000; i++) {
// 求 个十百 位上的数字
int ge = i%10;
int shi = i/10%10;
int bai = i/100;
// System.out.println("ge = " + ge+" "+" shi = " + shi+" "+" bai = " + bai);
int power = ge*ge*ge + shi*shi*shi+ bai*bai*bai;
// System.out.println("power = " + power);
if (power == i){
System.out.println("第"+(++count)+"个水仙花数: "+i);
}
}
}
public static void RandomSize2(int n) {
int min = (int) Math.pow(10, n - 1);
int max = (int) Math.pow(10, n);
// 定义一个数组
// 用来存放 1-9 n次方的结果
int[] pow = new int[10];
// 先存入1
pow[1] = 1;
// 存入 2-9 的n次方的结果
for (int i = 2; i < pow.length; i++) {
pow[i] = (int) Math.pow(i, n);
}
// 循环 min -max
for (int i = min; i < max; i++) {
int sum = 0;
for (int j = 10; j < max; j *= 10) {
sum += pow[i / j % 10];
}
sum += pow[i % 10];
if (sum == i) {
System.out.println(i);
}
}
}
}