JAVA每周一题(3)-----水仙花数
求100-999中的水仙花数,(若三位数abc,abc=a^3+b^3+c^3, 则称abc为水仙花数。如153,1^3+5^3+3^3=1+125+27=153,则153是水仙花数)
程序代码://水仙花数
class Daffodils {
public static boolean isDaffodils(int a) { //判断是否水仙花数
int hundred = a / 100 % 10;
int ten = a / 10 % 10;
int unit = a % 10;
return (a == hundred*hundred*hundred + ten*ten*ten + unit*unit*unit) ? true : false;
}
public static void printDaffodils(int a, int b) { //输出从a到b的水仙花数
for (int i = a; i <= b; i++) {
if (Daffodils.isDaffodils(i))
System.out.println(i);
}
}
}
public class MyClass {
public static void main(String[] args) {
int from = 100, to = 999; //从 100 到 999
System.out.println("以下是您要的水仙花数 从" + from + "到" + to);
Daffodils.printDaffodils(from, to);
}
}
//欢迎拍砖,谢谢
程序代码:import java.util.Scanner;
public class NarcissisticNumber
{
static int place(int s)
{
int i=0;
for(;s!=0;i++)
{
s/=10;
}
return i;
}
static void action(int s,int e)
{
int c=0,n;
for(int i=s;i<=e;i++)
{
int sum=0,t=i;
n=NarcissisticNumber.place(t);
for(;t!=0;)
{
sum+=Math.pow(t%10,n);
t/=10;
}
if(i==sum)
{
c++;
System.out.println(i+"是水仙花数。");
}
}
if(0==c)
{
System.out.println(s+"到"+e+"区间内没有水仙花数。");
}
}
static boolean judge(int s)
{
int sum=0,n;
n=NarcissisticNumber.place(s);
for(int i=0,t=s;t!=0;i++)
{
sum+=Math.pow(t%10, n);
t/=10;
}
if(s==sum)
{
return true;
}
else
{
return false;
}
}
/**
* @param args
*/
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
System.out.println("请输入你要判断水仙花数的起始数字");
int s=in.nextInt();
System.out.println("请输入你要判断水仙花数的末数字,若只判断一个数是否为水仙花数,请输入1");
int e=in.nextInt();
if(e==1|s==e)
{
if(NarcissisticNumber.judge(s))
{
System.out.println(s+"是水仙花数。");
}
else
{
System.out.println(s+"不是水仙花数。");
}
}
else
{
NarcissisticNumber.action(s,e);
}
}
}这个是我老早以前写的 不管几位都能测