A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhujunjie1994 中级黑马   /  2016-5-17 14:54  /  608 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求水仙花数。所谓水仙花数,是指一个数 abc,如果满足 a3+b3+c3=abc,则 abc 是水仙花数
                                                      abcd,如果满足a4+b4+c4+d4=abcd,则abcd是水仙花数
以此类推  输入一个N来代表数字的位数,输出从三位到N位的所有水仙花数。

1 个回复

倒序浏览
  1. import java.util.Scanner;

  2. public class 水仙花数2 {

  3.         private static Scanner scan;

  4.         public static void main(String[] args) {

  5.                 scan = new Scanner(System.in);
  6.                 int n = scan.nextInt();

  7.                 long startTime = System.currentTimeMillis();
  8.                 for (int i = 10; i <= n; i++) {
  9.                         if (isDaffodilNumber(i)) {
  10.                                 System.out.println(i + " 是水仙花数.");
  11.                         }
  12.                 }
  13.                 long endTime = System.currentTimeMillis();
  14.                 System.out.println("运行时间是: " + (endTime - startTime));
  15.         }

  16.         private static boolean isDaffodilNumber(int i) {

  17.                 int s = 0;
  18.                 int n = (i + "").length();                                                 // 计算数字串的长度

  19.                 for (int j = 1; j <= n; j++) {                 // 循环处理数字串
  20.                         int t1 = (int) (i / Math.pow(10, j - 1)); // 截取数字串,从前往后
  21.                         int t2 = (int) (Math.pow((t1 % 10), n));   // 提取最后一位数字,计算其n次方
  22.                         s += t2;
  23.                 }

  24.                 if (s == i) {
  25.                         return true;
  26.                 } else {
  27.                         return false;
  28.                 }

  29.         }
  30. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马