• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
JumperMan

对不起,我是一个程序员.

博客园    首页    新随笔    联系   管理    订阅  订阅
算法之水仙花数(Java语言)

概述


在数论中,水仙花数(Narcissistic number),也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number) ,用来描述一个N位非负整数,其各位数字的N次方和等于该数本身。

举例


 

例如153、370、371及407就是三位超完全数字不变数,其各个数之立方和等于该数:

 

153 = 13 + 53 + 33。
370 = 33 + 73 + 03。
371 = 33 + 73 + 13。
407 = 43 + 03 + 73。

Java算法


 

 1 /**
 2  * A Narcissistic number is a number that is the sum of its own digits each
 3  * raised to the power of the number of digits. E.g., 0, 1, 2, 3, 4, 5, 6, 7, 8,
 4  * 9, 153, 370, 371, 407, 1634, 8208, 9474.
 5  */
 6 public class NarcissisticNumberExample {
 7     //判断value是否为水仙花数
 8     public static boolean isNarcissisticNumber(int value) {
 9         int temp = value;
10         int digits = 0;
11         //判断value有几位数,保存在digits
12         while (temp > 0) {
13             digits++;
14             temp /= 10;
15         }
16         temp = value;
17         int sum = 0;
18         while (temp > 0) {
19             sum += Math.pow(temp % 10, digits);
20             temp /= 10;
21         }
22         return sum == value;
23     }
24     
25     //开始数和结束数
26     public static void printNarcissistics(int from, int to) {
27         int which=0;
28         for (int i = from; i <= to; i++)
29             if (isNarcissisticNumber(i)){
30                 which++;
31                 System.out.println("第"+which+"个水仙数是:"+i);
32             }
33 
34                 
35     }
36     
37     //1000里有几个水仙数
38     public static void main(String[] args) {
39         printNarcissistics(0,1000);
40     }
41 
42 }

结果


 

第1个水仙数是:0
第2个水仙数是:1
第3个水仙数是:2
第4个水仙数是:3
第5个水仙数是:4
第6个水仙数是:5
第7个水仙数是:6
第8个水仙数是:7
第9个水仙数是:8
第10个水仙数是:9
第11个水仙数是:153
第12个水仙数是:370
第13个水仙数是:371
第14个水仙数是:407

 

参考链接:

维基百科:https://zh.wikipedia.org/wiki/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0

Java for Beginners-Narcissistic Number: http://primaryjava.blogspot.hk/2013/10/narcissistic-number.html

 

posted on 2017-04-09 11:24  JumperMan  阅读(7175)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3