水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153 370 371 407
解题思路:
1.根据用户输入确定上下界,如输入3,则上届为999,下界为100
2.调用自设函数会比使用Math调用pow方法用时更快
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int range = in.nextInt(); int min = pow(10,range-1); int max = pow(10,range)-1; for(int i=min;i<=max;i++){ int result = 0; for(int j=1;j<=range;j++){ int n = i%pow(10,j)/pow(10,j-1); result += pow(n,range); } if(result == i){ System.out.println(i); } } } public static int pow(int a,int b){ int pow = 1; for(int j=1;j<=b;j++) { pow = pow * a; } return pow; } }