A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唱一些温暖 中级黑马   /  2015-12-28 15:40  /  804 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唱一些温暖 于 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. }
复制代码

3 个回复

倒序浏览
原来水仙花数不止是三位数啊,我错了大神
回复 使用道具 举报
黑马加油!!
回复 使用道具 举报
来复习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马