水仙花数算法分析
水仙花算法:
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:1^ 3+5^ 3+3^ 3 =153);给你A和B区间内有多少个水仙花数。
public class mianshiTest {
//1^3+5^3+3^3=153
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();//A
int num2 = scanner.nextInt();//B
int count = 0;//水仙花数的个数
int max = Math.max(num1, num2);
int min = Math.min(num1, num2);
if (min < 100) {
System.out.println("整数最少3位");
return;
} else {
//判断区间的每一个数是否是水仙花数,i是区间的整数
for (int num = min; num <= max; num++) {
int sum = 0;
//n是整数i的位数
int n = fun01(num);
for (int i = 0; i < n; i++) {
int num3 = 0;
num3 = (int) (num / Math.pow(10,i));
num3 = num3 % 10;
sum += Math.pow(num3, n);
}
if (sum == num) {
count++;
}
}
}
System.out.println("["+min+","+max+"]区间的水仙花数的个数为:"+count);
}
/**
* 计算数字的位数
*
* @param num
* @return
*/
public static int fun01(int num) {
int n = 0;
while (num != 0) {
num = num / 10;
n++;
}
return n;
}
}