水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。因为在春天水仙花是最迷人的,而数学家认为一个满足它的每个位上的数字的 n 次幂之和等于它本身的数是相当迷人的所以就叫之水仙花数。- //打印三位数的水仙花数
- public class NumberOfDaffodils {
- public static void main(String[] args) {
- //设置求水仙花数的最大范围
- int MAX = 1000;
-
- for (int i = 100; i < MAX; i++) {
- if (match(i)) {
- System.out.println(i);
- }
- }
-
- }
- private static boolean match(long in) {
- // 统计位数
- int count = (in + "").length();
- // 记录每位数字
- long temp = 0;
- // 辗转取余的保存数
- long num = in;
- // 求和数
- long sum = 0;
- for (int i = count; i > 0; i--) {
- temp = num / (long) Math.pow(10, i - 1);
- num = num % (long) Math.pow(10, i - 1);
- sum += Math.pow(temp, count);
- }
- return in == sum;
- }
- }
复制代码 |