问题描述
水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身,例如:13+53+3^3=153。
3位水仙花
- 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个100~999之间的整数:");
int n=sc.nextInt();
if(n>=100) {
int a=n%10; //个位
int b=n/10%10;//十位
int c=n/100; //百位
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==n) {
System.out.println("该数字是水仙花数");
}else {
System.out.println("该数字不是水仙花数");
}
}
}
}
- 运次结果
输出100-999之内的所有水仙花
- 代码
public class Main {
public static void main(String[] args) {
for(int i = 100;i <= 999;i++) {
int a=i%10;
int b=i/10%10;
int c=i/100;
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==i) {
System.out.println(i);
}
}
}
}
- 运行结果
四叶玫瑰数(三位及以上)
- 代码
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("输入一个三位以上的数字:");
int n=sc.nextInt();
int sum=0,count=0;
int temp=n,m=n;
while(temp!=0) {
temp=temp/10;
count++;
}
for (int i = 0; i < count; i++) {
int a=n%10;
n=n/10;
sum=(int) (sum+Math.pow(a, count));
}
if(sum==m) {
System.out.println("该数字是水仙花数");
}else {
System.out.println("该数字不是水仙花数");
}
}
}
- 运行结果
代码重点解析
Math.pow(底数, 指数);
Math.pow(a, 3);等价于 a*a*a;