前言:
本篇博客将带大家了解如何判断水仙花数、打印100~999之间的水仙花数和将水仙花数推广到一般情况。
目录
如何判断水仙花数
思路:
在写题目之前,我们必须要了解,什么数才算是水仙花数;
何为水仙花数:
水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例:153=1^3+5^3+3^3
知晓了水仙花数的定义后,我们发现,此题可以通过:
- 把三位数的每一位数都分别取出来
- 对每一位数立方(可以通过Math.pow()来实现)
- 把他们的立方相加
把做法分解以后,代码很快就能得出,如下:
import java.util.Scanner;
public class TestNight {
public static void main(String[] args) {
//输入要判断的数字:
System.out.println("请输入要判断的数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//对该数进行判断:
int tmp = n;
int sum = 0;
while(tmp != 0){
sum += Math.pow(tmp%10,3);
tmp /=10;
}
if(sum == n){
System.out.println(n+"是一个水仙花数");
}else{
System.out.println(n+"不是一个水仙花数");
}
}
}
结果:
打印100~999之间的水仙花数:
思路:
学会了如何判断水仙花数,我们再来打印一个范围内的水仙花数就显得极其简单了。我们只需要在判断的外面套一个for循环来限制它的判断范围,然后再将所有满足条件的水仙花数打印即可。
public class Main {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
int tmp = i;
int sum = 0;
//判断部分:
while(tmp != 0){
sum += Math.pow(tmp%10,3);
tmp /=10;
}
if(sum == i){
System.out.print(i+" ");//注意这里选择print,和多打印一个空格均是为了好看。
}
}
}
}
结果:
将水仙花数推广到一般情况
所谓推广到一般情况,就是指有一个n位数,满足其各个位上的数的n次方的和等于它本身
思路:
有了判断水仙花数的基础后,我们很容易发现,推广到一般情况和判断水仙花数就只差了一个求待判断的数的位数(即,判断待判断的数是一个几位数)。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//输入一个待判断的数字:
System.out.println("请输入一个待判断的数字:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//求n的位数:
int count =0;
int tmp = n;
while(tmp != 0){
count ++;
tmp /= 10;
}
//进行判断:
tmp = n;
int sum = 0;
while(tmp != 0){
sum += Math.pow(tmp%10,count);
tmp /= 10;
}
if(sum == n){
System.out.println(n+"满足");
}
}
}
结果: