练习_求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以内的水仙花数,及扩展思路。的主要内容,如果未能解决你的问题,请参考以下文章

c语言求1000以内水仙花数。

求1000以内的水仙花数 Java小程序

c语言1000以内的水仙花数

如何用VB语言求水仙花数和求1~1000以内的素数

求水仙花数c语言

用c语言编程1000以内的“水仙花数”、并且结果偶数输出奇数不输出、求大神速度指教、拜托了🙏