栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA循环求用户指定任意大小以下的自幂数(水仙花数),没有复杂语法和算法。

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA循环求用户指定任意大小以下的自幂数(水仙花数),没有复杂语法和算法。

        今天闲来无事,打算把周三选修的JAVA作业给做了。题目也很简单,求1000以下的水仙花数

(也就是自幂数)。因为之前学过C,像这样简单的语法入门题自然是不在话下。

        但就在打算偷个懒,草草写完交作业时,突然想给老师整个花活,让用户自己输入要求的数(结果这个花活花了一个钟头才写完,与之前的偷懒想法背道而驰)。

 

        废话就不多说了,直接上代码,写完作业再去把之前HDLBits的坑给填了(笑死,根本填不完)。

 

就难点而言,可能是需要绕几个弯,先把用户数的位数求出来,再求当前数字的位数。

import java.util.Scanner;
public class homework1 
{
    public static void main(String[] args) 
    {
        int a[]=new int[10],i=0,j=0,k=0,z=1;
        long neednum;
        long num=0;
        int temp=0,temp1=0;
        long sum_of_num=0;
        System.out.println("请输入要求的水仙花数的上限制");
        Scanner input=new Scanner(System.in);
        neednum=input.nextInt();
        for(i=1;i<10;i++,temp1++)
        {
            temp=(int) (neednum/Math.floor((Math.pow(10,i))));
            if(temp<=0)
            {
                break;
            }//求出用户输入的数字的位数 Math.floor向下取整

        }
        System.out.println("输入的数字为"+i+"位数");
        for(num=100;num0;k--)
            {
                a[k]=(int) Math.floor(((num-temp1)/Math.pow(10,k-1)));
                temp1+=a[k]*Math.floor(Math.pow(10,k-1));
               //  System.out.print(""+a[k]);
                sum_of_num+=((int)(Math.pow(a[k],j)));
            }//统计每一位数的大小,并计算幂级数的总和
            // System.out.print("      ");
             if(sum_of_num==num)
             {
                System.out.print(+neednum+"以下自幂数有:"+sum_of_num+"     ");
                while(z++%5==0)
                System.out.println();
            }

        }
    }
}

可悲的是学了两三年C语言了,我还是只会一些基础得不行的算法。毕竟电技专业,平常的物理课那是又多又难,学校也不开数据结构与算法的课。只能用暴力循环来求解了,希望有大佬斧正,写出更快的代码(的电脑跑8位数字就用了一分钟)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号