java计算自幂数:对于一个正整数而言,长度是n,如果它的各位上的数字的n次方之和正好等于它本身,那么一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数
一位自幂数:独身数: 1,2,3,4,5,6,7,8,9
两位自幂数:没有
三位自幂数:水仙花数:153,370,371,407
四位自幂数:四叶玫瑰数:1634,8208,9474
五位自幂数:五角星数:54748,92727,93084
六位自幂数:六合数:548834
七位自幂数:北斗七星数:1741725,4210818,9800817,9926315
八位自幂数:八仙数:24678050,24678051,88593477
九位自幂数:九九重阳数
十位自幂数:十全十美数
public static void main(String[] args) {
for (int i = 1; i <= 9999999999; i++) {
int count = 0;//记录位数
int tmp = i;//定义一个临时变量等于i,避免后面要判断与i相等时i的值改变
while(tmp!=0){
tmp/=10;
count++;
}
int sum = 0;
tmp = i;
while(tmp!=0){
sum+=Math.pow(tmp%10,count);
tmp/=10;
}
if(sum == i){
System.out.println(i);
}
}
}
输入一个数 求10~该数之间所有的 自幂数 倒序输出
//输入一个数 求10~该数之间所有的 自幂数 倒序输出
import java.util.Scanner;
public class Demo{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个大于10的数:");
int num = sc.nextInt();
int c=0;
for (int i = num; i > 10; i--) {
int count = 0; //记录位数
int tmp = i; //定义一个临时变量等于i,避免后面要判断与i相等时i的值改变
while(tmp!=0){
tmp/=10;
count++;
}
int sum = 0;
tmp = i;
while(tmp!=0){
sum+=Math.pow(tmp%10,count);
tmp/=10;
}
if(sum == i){
System.out.println(i);
c+=1;
}
}
System.out.println("10~"+num+"之间一共有"+c+"个自幂数");
}
}