练习_求1000以内的水仙花数,及扩展思路。
Posted bingxuewangjue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习_求1000以内的水仙花数,及扩展思路。相关的知识,希望对你有一定的参考价值。
//判断是否是水仙花数
//水仙花数是指一个 n 位数(n≥3 ),
//它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
//获取1000以内的水仙花数
思路:1000以内的数是都三位数,只要控制循环到1000然后风别获取到这个数的个位十位百位乘以三次幂再相加判断是否等于这个数。
代码如下:
/* * 获取1000以内的水仙花数 */ public class isNarcissus { public static void main(String[] args) { // TODO Auto-generated method stub for(int i=100;i<1000;i++){ int a = i%10;//个位数 int b = i/10%10;//十位数 int c = i/100%10;//百位数 if ( (a*a*a + b*b*b + c*c*c)==i ) { System.out.print(i+" "); } } } }
结果:
1000以内的水仙花数我们求出来了,那么如果要求10000以内,100000以内的水仙花数怎么求,封装一个类,
//计算自幂数 public class Narcissuses { private int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } public boolean isNarcissuser(){ int count=(value+"").length();//保存位数 int vae=value;//备份 int sum=0;//保存结果; int a=0;//保存个位 while(value>0){ int b=1; //保存每位数幂次发后结果 a=value%10;//得到个位 for(int i=0;i<count;i++){ b*=a;//计算幂数 } sum+=b;//结果相加 value/=10;//循环结束,准备下一位数的幂数获取 } //判断结果是否等于本身。 if(sum==vae){ return true; } return false; } }
调用这个类
1 public class NarcissuseMain { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 Narcissuses ns=new Narcissuses(); 6 //求1000以内的自幂数 7 for (int i = 100; i < 999; i++) { 8 ns.setValue(i); 9 if(ns.isNarcissuser()){ 10 System.out.print(i+" "); 11 12 } 13 } 14 15 } 16 }
结果:
以上是关于练习_求1000以内的水仙花数,及扩展思路。的主要内容,如果未能解决你的问题,请参考以下文章