四叶玫瑰数数:是一个四位数 数的每一个数制位上的数字的4次方和等于数字本身
分析:想要找到四叶玫瑰数必须从1000到9999 之间所有的数字中去寻找【对所有三位数进行判断】,这就需要循环了。
具体代码实现:
public class RoseAmount {
public static void main(String[] args) {
fourLeafRose();
}
public static void fourLeafRose() {
//定一个个记录次数的变量
int count = 0;
//判断所有的四位数
for(int num = 1000; num < 10000; num++) {
//获取个位上的数字
int theUnit = num % 10;
//获取十位上的数字
int decade = num / 10 % 10;
//获取百位上的数字
int hundreds = num / 100 % 10;
//获取千位上的数字
int kilobit = num / 1000;
//将每一个数制位上的数字四次方并加起来
/*double num1 = Math.pow(theUnit, 4);
double num2 = Math.pow(decade, 4);
double num3 = Math.pow(hundreds, 4);
double num4 = Math.pow(kilobit, 4);*/
//int sum = (int)(num1 + num2 + num3+ num4);
int num1 = theUnit * theUnit * theUnit * theUnit;
int num2 = decade * decade * decade * decade;
int num3 = hundreds * hundreds * hundreds * hundreds;
int num4 = kilobit * kilobit * kilobit * kilobit;
int sum = num1 + num2 + num3 + num4;
//判断和数字是否相等
if(num == sum) {
count ++;
//打印四叶玫瑰数
System.out.println(num);
}
}
System.out.println("四叶玫瑰数一共有:" + count + "个");
}
}
代码运行结果展示:
1634
8208
9474
四叶玫瑰数一共有:3个
相同的例子还有水仙花数,基本思路都是一样的,只不过水仙花数是从三位数里面找的,下面展示它的代码实现,以供大家参考。
基本代码实现:
public class Daffodil {
public static void main(String[] args) {
daffodilNum();
}
public static void daffodilNum() {
// 1、定义一个计数器
int count = 0;
// 判断所有的三位数
// 2、先获取每一个三位数
for (int num = 100; num < 1000; num++){
// 取到三位数进行判断
// 3、获取每个数制位上面的数字
int g = num % 10;
int s = num / 10 % 10;
int b = num / 100 % 10;
// 4、三次方和求取
int sum1 = g*g*g + s*s*s + b*b*b;
// 5、判断求取的和和数字是否相等
if (sum1 == num){
// 找到水仙花数需要计数
count++;
// 输出水仙花数
System.out.println("第" + count + "个水仙花数为:" + num );
}
}
// 打印水仙花数的个数
System.out.println("水仙花数的个数为" + count );
}
}
代码运行效果:
第1个水仙花数为:153
第2个水仙花数为:370
第3个水仙花数为:371
第4个水仙花数为:407
水仙花数的个数为4
如果您觉得有什么错误的地方,还请多多指点