前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >枚举算法(Enumeration algorithm)实例一

枚举算法(Enumeration algorithm)实例一

作者头像
赵腰静
发布2018-03-09 15:23:35
1.1K0
发布2018-03-09 15:23:35
举报
文章被收录于专栏:程序猿

(建议电脑看原文链接,平台的排版不太好,太累了。)描述:在n位的整数中,例如153可以满足1^3 + 5^3 + 3^3 = 153,这样的数称之为Armstrong数。

将所有的Armstrong数按小到大排序,试写出一程序找出n位数以下的所有Armstrong数,网上大多数是已知位数求确定位数下的Armstrong数,本题在此基础上提高了一定的难度。

手机浏览图片,电脑用户浏览下面的代码

代码语言:javascript
复制
/**
 * @Author: zhaoyaojing
 * @Email: null
 * @Date: 02/02/2018
 * @Time: 8:53 PM
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ArmstrongNum {
    public ArmstrongNum(){
    }

    /**
     * 枚举法
     * 求n位数以下的所有Armstrong数,也就是10的(n+1)次幂以下的数
     */
    public void getAllArmstrongNum1(int n){

        //从1开始到10的n次幂
        for(int i = 1; i < (int) Math.pow(10, n); i++){

            //sum表示一个i位数等于其个位数的i次方之和,i小于等于n。
            int sum = 0;

            //把每个数查分成i个个位数,放在数组里
            int[] mun = new int[n];

            //获得当下查询值
            int thisNum = i;

            //j为当下查询值的位数
            int j = 0;

            //得到一个存放当下数每位上的数的数组mun
            while (thisNum > 0){
                mun[j] = thisNum % 10;
                thisNum = thisNum / 10;
                ++j;
            }

            //求得sum
            for(int k = 0; k < n; k++){
                sum = sum + (int)Math.pow(mun[k], j);
            }

            //如果i属于Armstrong数,则输出,以一个空格为间隙。
            if(i == sum){
                System.out.print(i + " ");
            }
        }
    }

    public static void main(String[] args) throws Exception, IOException {
        // TODO Auto-generated method stub
        ArmstrongNum armstrongNum = new ArmstrongNum();
        System.out.print("求n位数以下的Armstrong数,请先输入n的值:\n");

        //输入n
        int n = Integer.parseInt(new BufferedReader
                (new InputStreamReader(System.in)).readLine());

        //得到n位数以下的所有Armstrong数
        armstrongNum.getAllArmstrongNum1(n);
    }
}
代码语言:javascript
复制
求n位数以下的Armstrong数,请先输入n的值:
5
1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库SQL 微信公众号,前往查看

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

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

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