首先明确一下什么是水仙花数
百度说,水仙花数指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身
例如:1^3+5^3+3^3=153
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才能成为水仙花数。
但其实也分一位自幂数,两位自幂数,三位自幂数,四位自幂数等等。
所以鉴于水仙花数的定义的不确定和模糊性
以下代码示例不仅限于三位数的水仙花数,主要涉及的是思想问题。
类名:JavaNarcissus
构造函数:JavaNarcissus()
判断一个数是否为水仙花数:IsNarcissus()---通过键盘输入,对输入的数据进行分析
判断一个数是否为水仙花数:IsNarcissus(int value)---通过参数传递
列举100-999中的所有水仙花数:enumNarcissus()---注意这边和以上对的都是三位数
列举1-1000中的所有水仙花数(这个说法可能是错误的,但是重要的是思想):enumAllNarcissus()---我使用了两种方法,其实还有一种可以用字符串,就不多写了。
主函数:main()
package JavaTestSelf;
import java.util.Scanner;
//判断一个三位数是水仙花数
//找出1000以内的所有水仙花数
//153?=1^3+5^3+3^3 3次方的3是这个数的位数
public class JavaNarcissus {
//构造函数
JavaNarcissus()
{
System.out.println("请输入一个三位数:");
}
//判断一个三位数是否为水仙花数,通过键盘输入
public void IsNarcissus()
{
Scanner scan = new Scanner(System.in);
int temp = scan.nextInt();
if(temp<100||temp>999)
{
System.out.println("你输入的不是三位数,请重新输入!");
}
else
{
int first = temp/100;
int middle = (temp%100)/10;
int last = temp%10;
double result = Math.pow(first, 3)+Math.pow(middle, 3)+Math.pow(last, 3);
if(result==temp)
{
System.out.println(temp + "是水仙花数!");
}
else
{
System.out.println(temp + "不是水仙花数!");
}
}
}
//判断一个三位数是否为水仙花数,通过参数传递
public void IsNarcissus(int value)
{
if(value<100||value>999)
{
System.out.println("你输入的不是三位数,请重新输入!");
}
else
{
int first = value/100;
int middle = (value%100)/10;
int last = value%10;
double result = Math.pow(first, 3)+Math.pow(middle, 3)+Math.pow(last, 3);
if(result==value)
{
System.out.println(value+ "是水仙花数!");
}
}
}
//列举100-999中所有的水仙花数
public void enumNarcissus()
{
for(int i=100;i<1000;i++)
{
IsNarcissus(i);
}
}
//列举1-1000中所有的水仙花数
public void enumAllNarcissus()
{
//方法一
//for(Integer i=1;i<=1000;i++)
//{
//double sum = 0;
//String s = i.toString();
//int number = s.length();
//byte[] byteArr = s.getBytes();
//for(int j=0;j
//{
//sum += Math.pow((byteArr[j]-48), number);
//}
//if(sum == i)
//{
//System.out.println(i + "是水仙花数!");
//}
//}
//方法二
for(Integer i=1;i<=1000;i++)
{
int sum=0;
String s = i.toString();
int number = s.length();
for(int j=0;j
{
int res = (int)(i/(Math.pow(10, j)))%10;
sum += Math.pow(res, number);
}
if(sum==i)
{
System.out.println(sum + "是水仙花数!");
}
}
}
//main函数
public static void main(String[] args) {
JavaNarcissus test = new JavaNarcissus();
test.IsNarcissus();
test.enumNarcissus();
test.enumAllNarcissus();
}
}
原文:http://blog.csdn.net/u010792238/article/details/38141451