大家好,又见面了,我是你们的朋友全栈君。
求出0~999之间的所有“水仙花数”并输出。所谓“水仙花数”是指一个三位数,其各位数字的立方和恰好等于该数本身。
public static void main(String[] args) {
System.out.println("水仙花数有:");
for (int i = 100; i <1000; i++) {
int hundard = i / 100;//百位数
int decade = (i % 100) / 10;//十位数
int one = i % 10;//个位数
int sum = hundard * hundard * hundard
+ decade * decade *decade + one * one * one;
if(sum == i){
System.out.print(i+" ");
}
}
}
//运行结果
水仙花数有:
153 370 371 407
扩展: 满足该数的各位数字的立方和等于其本身这种条件的数称为自幂数,水仙花数只是自幂数的一种,满足条件还有四位数、五位数等等,那么显然上面的代码不足于求其他位数的自幂数。
代码优化:
//求0-999999之间的自幂数
public static void main(String[] args) {
func();
}
public static void func(){
for (int i = 0; i < 1000000; i++) {
//计算是几位数
int tmp = i;
int count = 0;
while (tmp != 0){
count++;
tmp = tmp / 10;
}
tmp = i;
//计算当前数字tmp的每一位
int sum = 0;
while (tmp != 0){
sum += Math.pow(tmp % 10,count);
tmp /= 10;
}
if(sum == i){
System.out.println(i);
}
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157027.html原文链接:https://javaforall.cn