前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 水仙花数(循环)

java 水仙花数(循环)

作者头像
Cell
发布2022-02-25 15:56:14
5880
发布2022-02-25 15:56:14
举报
文章被收录于专栏:Cell的前端专栏

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

定义

水仙花数只是自幂数的一种,严格来说 3 位数的 3 次幂数才称为水仙花数。 附:其他位数的自幂数名字 一位自幂数:独身数 两位自幂数:没有 三位自幂数:水仙花数 四位自幂数:四叶玫瑰数 五位自幂数:五角星数 六位自幂数:六合数 七位自幂数:北斗七星数 八位自幂数:八仙数 九位自幂数:九九重阳数 十位自幂数:十全十美数

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

package xunhuan; import java.util.Scanner; public class shuixianhua { public static void main(String[] agrs) { System.out.print("指定最大位数 N:"); Scanner input = new Scanner(System.in); int N = input.nextInt(); input.close(); for (int i = 3; i <= N; i++) { int a[] = new int[i]; int num = (int) Math.pow(10, i - 1) + 1; System.out.print(i + "位的水仙花数有:\t"); while (num <= Math.pow(10, i)) { int sum = 0; for (int j = 0; j < i; j++) a[j] = (int) (num / Math.pow(10, j) % 10);//取各个位的数 for (int j = 0; j < i; j++) sum = sum + (int) Math.pow(a[j], i); if (num == sum) System.out.print(num + "\t"); num++; } System.out.print("\n"); } } }

由于 int 精度限制,最多算到 9 位,而且使用常规算法,算到 8,9 位的时候就特别慢了。

1 2 3 4 5 6 7 8

指定最大位数 N:10 3 位的水仙花数有: 153 370 371 407 4 位的水仙花数有: 1634 8208 9474 5 位的水仙花数有: 54748 92727 93084 6 位的水仙花数有: 548834 7 位的水仙花数有: 1741725 4210818 9800817 9926315 8 位的水仙花数有: 24678050 24678051 88593477 9 位的水仙花数有: 146511208

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档