本帖最后由 唱一些温暖 于 2015-12-28 15:44 编辑
- package prog50;
- import java.util.Scanner;
- /*
- * 题目:打印出100-999所有的"水仙花数".
- * 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
- * 例如:153是一个"水仙花数",1^3 + 5^3+ 3^3 = 153
- */
- public class Prog3 {
- public static void main(String[] args){
- //循环检查每一个3位数
- for(int x=100;x<=999;x++){
- //定义变量a存放数据,变量b记录每个三位数每个位上的数字的 n 次幂之和,变量c=x
- int a=0,b=0,c=x;
- //求出b的值,即当前数字x每个位上的数字的 n 次幂之和
- for(int y=1;y<=3;y++){
- a=c%10;
- c=c/10;
- b=(a*a*a)+b;
- }
- //比较是不是等于本身,等于就是水仙花数
- if(b==x){
- System.out.println("水仙花数:"+x);
- }
- }
- }
- }
- //输入一个数,打印到这个数为止的所有水仙花数,例如输入9999999(7位数)
- class Porg3_2{
- public static void main(String[] args){
- //导入扫描仪,
- Scanner in=new Scanner(System.in);
- System.out.println("请输入一个大于100的数字:");
- //键盘输入数字
- int z=in.nextInt();
- //关闭扫描仪
- in.close();
- //从100循环到输入的数为止
- for(int x=100;x<=z;x++){
- //定义变量a存放数据,变量b记录每个三位数每个位上的数字的 n 次幂之和,变量c=x
- int a=0,c=x;
- double b=0;
- //当前x转化成字符串获取长度,注意是当前的x
- int d=Integer.toString(x).length();
- //求出b的值,即当前数字x每个位上的数字的 n 次幂之和
- for(int y=1;y<=d;y++){
- a=c%10;
- c=c/10;
- //因为java中^运算是位运算,所以a^b次幂表达为Math.pow(a,d)
- b=(Math.pow(a,d))+b;
- }
- //比较是不是等于本身,等于就是水仙花数
- if(b==x){
- System.out.println("水仙花数:"+x);
- }
- }
- }
- }
复制代码 |
|