import java.util.*;
import java.math.*;
//寻找阿姆斯特朗数
public class LookforNumber
{
public Scanner scanner = new Scanner(System.in);
public static void main(String[] args){
LookforNumber ln = new LookforNumber();
ln.number();
}
public void number(){//计算三位,四位,五位的阿姆斯特朗数
System.out.println("这是在求阿姆斯特朗数(n=3时,为水仙花数):");
System.out.println("请输入要求数的位数:");
int n = scanner.nextInt();
int a=0,b=0,c=0,d=0,e=0;
int x = (int)Math.pow(10,n-1);
int y = (int)Math.pow(10,n);
for(;x<y;x++){
for(int z=1;z<=n;z++){
switch(z){
case 1 : a = x/(int)Math.pow(10,n-z);break;
case 2 : b = x/(int)Math.pow(10,n-z)%10;break;
case 3 : c = x/(int)Math.pow(10,n-z)%10;break;
case 4 : d = x/(int)Math.pow(10,n-z)%10;break;
case 5 : e = x/(int)Math.pow(10,n-z)%10;break;
default : break;
}
}
if(x == (int)Math.pow(a,n)+(int)Math.pow(b,n)+(int)Math.pow(c,n)
+(int)Math.pow(d,n)+(int)Math.pow(e,n)){
System.out.print(x + " ");
}
}
System.out.println();
System.out.println("上述都是阿姆斯特朗数。");
}
}
上边的代码是第一次写的,有许多的地方不完善,
所以我又重新写了一遍,代码如下:
import java.util.Scanner;
public class FlowerTest {
public Scanner scanner = new Scanner(System.in);
public static void main(String[] args){
FlowerTest ln = new FlowerTest();
ln.number();
}
public void number(){//计算三位,四位,五位的阿姆斯特朗数
System.out.println("这是在求阿姆斯特朗数(n=3时,为水仙花数):");
System.out.println("请输入要求数的位数:");
int n = scanner.nextInt();
int x = (int)Math.pow(10,n-1);//数的最小值
int y = (int)Math.pow(10,n);//数的最大值
for(;x<y;x++){//对每一个数进行选择
int num=0;
for(int z=1;z<=n;z++){//选取数字的每一位
num = num + (int)Math.pow(x/(int)Math.pow(10,n-z)%10,n);
}
if(x == num){//比对数与计算后的值是否相等
System.out.println(x + " 该数是阿姆斯特朗数!");
}
}
}
}
阿姆斯特朗数就到这里,如果大家还有不懂的可以与我联系