黑马程序员技术交流社区

标题: 题目3:打印水仙花数 [打印本页]

作者: 唱一些温暖    时间: 2015-12-28 15:40
标题: 题目3:打印水仙花数
本帖最后由 唱一些温暖 于 2015-12-28 15:44 编辑
  1. package prog50;
  2. import java.util.Scanner;
  3. /*
  4. * 题目:打印出100-999所有的"水仙花数".
  5. * 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
  6. * 例如:153是一个"水仙花数",1^3 + 5^3+ 3^3 = 153
  7. */
  8. public class Prog3 {
  9.         public static void main(String[] args){
  10.                 //循环检查每一个3位数
  11.                 for(int x=100;x<=999;x++){
  12.                         //定义变量a存放数据,变量b记录每个三位数每个位上的数字的 n 次幂之和,变量c=x
  13.                         int a=0,b=0,c=x;
  14.                         //求出b的值,即当前数字x每个位上的数字的 n 次幂之和
  15.                         for(int y=1;y<=3;y++){
  16.                                 a=c%10;
  17.                                 c=c/10;
  18.                                 b=(a*a*a)+b;
  19.                         }
  20.                         //比较是不是等于本身,等于就是水仙花数
  21.                         if(b==x){
  22.                                 System.out.println("水仙花数:"+x);
  23.                         }
  24.                 }
  25.         }
  26. }
  27. //输入一个数,打印到这个数为止的所有水仙花数,例如输入9999999(7位数)
  28. class Porg3_2{
  29.         public static void main(String[] args){
  30.                 //导入扫描仪,
  31.                 Scanner in=new Scanner(System.in);
  32.                 System.out.println("请输入一个大于100的数字:");
  33.                 //键盘输入数字
  34.                 int z=in.nextInt();
  35.                 //关闭扫描仪
  36.                 in.close();
  37.                 //从100循环到输入的数为止
  38.                 for(int x=100;x<=z;x++){
  39.                         //定义变量a存放数据,变量b记录每个三位数每个位上的数字的 n 次幂之和,变量c=x
  40.                         int a=0,c=x;
  41.                         double b=0;
  42.                         //当前x转化成字符串获取长度,注意是当前的x
  43.                         int d=Integer.toString(x).length();
  44.                         //求出b的值,即当前数字x每个位上的数字的 n 次幂之和
  45.                         for(int y=1;y<=d;y++){
  46.                                 a=c%10;
  47.                                 c=c/10;
  48.                                 //因为java中^运算是位运算,所以a^b次幂表达为Math.pow(a,d)
  49.                                 b=(Math.pow(a,d))+b;
  50.                         }
  51.                         //比较是不是等于本身,等于就是水仙花数
  52.                         if(b==x){
  53.                                 System.out.println("水仙花数:"+x);
  54.                         }
  55.                 }
  56.         }
  57. }
复制代码

作者: 愿随风丶飘雪    时间: 2015-12-28 22:36
原来水仙花数不止是三位数啊,我错了大神
作者: txw126    时间: 2015-12-28 22:51
黑马加油!!
作者: 隔壁老猫    时间: 2015-12-28 23:06
来复习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2