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); } } }这个是我老早以前写的 不管几位都能测