主题:水仙花数(阿姆斯特朗数也就是俗称的水仙花数,是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33,所以 153 就是一个水仙花数。)
补充其他自幂数:
一位自幂数:独身数
三位自幂数:水仙花数(阿姆斯特朗数)
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
问题:求0到999之间的水仙花数并输出
思路:先求出有几位数,再利用Math.pow(各个位上的数,次方数)进行相加,若各个位上的数和为水仙花数则输出。(水仙花数为三位数,因此从99开始。)
代码:
public static void func(int n){ for(int i=99;i<=n;i++){ int sum=0; int count=0; int tmp=i; //1.求当前数字是几位数 while(tmp!=0){ count++; tmp/=10; } tmp=i; while(tmp!=0){ // Math.pow是double型,sum为int型,sum=sum+会带警告 sum+=Math.pow(tmp%10,count); tmp=tmp/10; } if(sum==i){ System.out.println(i); } } } public static void main(String[]args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); func(n); }