水仙花数
来源:互联网 发布:淘宝店铺号可以修改吗 编辑:程序博客网 时间:2024/05/17 02:01
package com.tsxs.arithmetic;/** * 计算水仙花数.<br> * 水仙花数:一个n(n>=3)位数,它的每个位数上的数字的n次幂之和等于它本身.<br> * 例如:371=3^3+7^3+1^3.<br> * 思路:<br> * 1.数据的位数:操作数除以10的商的位数加1.<br> * 2.每个位数上的数:操作数每次除以10的余数.<br> * 3.字符串切割切换非算法,此处不使用. * */public class DaffodilNumber {public static void main(String[] args) {for(int i = 100;i < 100000;i++){if(isDaffodilNumber(i)){System.out.println(i);}}}/** * isDaffodilNumber:判断是否为水仙花数 * @param number 操作数 * @return boolean true为水仙花数 * */static boolean isDaffodilNumber(int number){//获取数据的位数int length = 0;//备份数据int temp1 = number;int temp2 = number;//保存各位次幂纸之和int sum = 0;//判断水仙花结果boolean isDaffodil = false;//位数while(temp1 / 10 > 0){temp1 /= 10;length++;}length++;//判断是否为水仙花for(int i = 0;i <= length;i++){sum+=Math.pow(temp2 % 10, length);//sum = (int) (sum + Math.pow(temp2 % 10, length));temp2/=10;}//如果和等于本身为水仙花if(sum == number){isDaffodil = true;}return isDaffodil;}}
计算结果,100~100000,水仙花数:
153
370
371
407
1634
8208
9474
54748
92727
93084
注:此处写代码时,发现了一个小问题(jdk version:1.8.0_45),请看下边代码:
sum+=Math.pow(temp2 % 10, length);
sum = (int) (sum + Math.pow(temp2 % 10, length));
以上代码都正确执行.
1:Math.pow方法实现:public static native double pow(double a, double b);
2:Math.pow方法返回值为double和int进行"+"算数运算,运算结果为double,赋值int类型 的sum要进行强制类型转换.
3:i,j为数值型.
运算规则:i+=j; //等价于 i = i + j;
计算水仙花数,此处可见,精度不同,但赋值运算符"+="尽然已经做了隐式类型转换(自动类型转换).
4:精度变高,所占位数(bit)变长:
byte→short(char)→int→long→float→double
5:基本数据类型:
数据类型 名称 长度 默认值 位数范围
boolean 布尔型 1字节(8位) false 只有false、true
byte 字节型 字节(1byte=8bit) 0 -128~127 (-2^7~2^7-1)
char 字符型 2字节(16位) '\u0000' '\u0000'~'\uffff'
short 短整型 2字节(16位) 0 -32768~32767 (-2^15~2^15-1)
int 整型 4个字节(32位) 0 -2147483648~2147483647 (-2^31~2^31-1)
long 长整型 8个字节(64位) 0 -9223372036854774808~9223372036854774807(-2^63~2^63-1)
float 浮点型 4个字节(32位) 0.0f 3.402823e+38 ~ 1.401298e-45 (e+38是乘以10的38次方,e-45是乘以10的负45次方,e=10)
double 双精度型 8个字节(64位) 0.0d 1.797693e+308~ 4.9000000e-324
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- 水仙花数
- tomcat通过conf-Catalina-localhost目录发布项目详解
- HDU 4309 Seikimatsu Occult Tonneru(最大流SAP+状态压缩枚举)
- 注释转换 ——C注释转换为标准C++注释
- 第14周项目1-小玩文件(3)键盘输入文件名统计字母、数字
- STL学习总结
- 水仙花数
- 自动生成MVC中的model实体类的核心代码
- ACE中线程的创建和管理
- C++的4种类型转换关键字及其特点
- 在xbox配置hadoop伪分布中主要遇到的问题以及解决的办法
- 素数
- 互斥锁机制
- Java.lang.Process需要注意的问题
- 第14周项目1-小玩文件(4)键盘输入文件名统计数据