用java求水仙花数最经典的代码

1.打印100-n之间的水仙花数,水仙花数定义,n由用户输入,n大于100
每一位的该数位数次方之后等于该数,那么该数为水仙花数
如:153=1的3次方+5的3次方+3的3次方,注意:这里位数不确定,需要动态的获取。


思路分析:
 a)输入n在101到99999的数字-》利用循环
 b)找出100到n的所有数字-》利用循环
 c)判断当前的数字是否是水仙花数
        1)由153=1的3次方+5的3次方+3的3次方 分析,153就是判断数字,可以直接获取到 
        2)3次方——》数的位数
        3)  1,3,5——》数的每一位数字
        4)  1的3次方-->数的次方
        5)  1的3次方+5的3次方+3的3次方---》累加求和

        6)求和之后与数字153比较即可判断

import java.util.Scanner;
public class Test7{
public static void main(String args[]){
demo();
}
public static void demo(){
int n=inputInt2(101,99999);
for(int num=101;num<=n;num++){
if(isFlowerNum(num)){
System.out.println(num);
}
}
}
public static boolean isFlowerNum(int num){
int oldNum=num;
int ws=weishu(num);
int cfNum=0;
while(true){
int gw=num%10;
int cf=ciFang(gw,ws);
cfNum+=cf;
num/=10;
if(num==0){
break;
}
}
if(oldNum==cfNum){
return true;
}
return false;
}
public static int ciFang(int num1,int num2){
int sum=1;
for(int i=0;i<num2;i++){
sum*=num1;
}
return sum;
}
public static int weishu(int num){
int count=0;
do{
num/=10;
count++;
}while(num!=0);
return count;
}
public static int inputInt2(int min,int max){
int in=inputInt();
while(true){
if(in>=min&&in<=max){
return in;
}
}
}
public static int inputInt(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数:");
int in=sc.nextInt();
return in;
}
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值