`
typa01_kk
  • 浏览: 1282 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

水仙花数

 
阅读更多
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

分享到:
评论

相关推荐

    求水仙花数

    水仙花数是一种特殊的三位数,其每个位上的数字的立方和等于该数本身。例如,153是一个水仙花数,因为1的立方是1,5的立方是125,3的立方是27,而1125+27=153。在编程中,我们可以编写一个程序来查找指定范围内的...

    求水仙花数C++,两种判断

    水仙花数,又称阿姆斯特朗数,是指一个三位数,它的每个位上的数字的立方和等于这个数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。这种数字在计算机科学和数学中是一个有趣的特例,常被用来作为编程...

    水仙花数 (20 分)PTA

    实验4-2-5 水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写程序,计算所有N位水仙花数。 输入格式: 输入...

    C语言编程求水仙花数

    在计算机编程领域,"水仙花数"是一个有趣的概念,主要与数字的算术特性相关。水仙花数,也称为 Narcissistic number,在中国的计算机科学教育中常见于C语言的初学者练习。这个概念源自于这样的数字特性:一个三位数...

    水仙花数的实现

    水仙花数 水仙花数是三位数,它的各位数字的立方和等于这个三位数本身

    C++实验题:求水仙花数

    ### C++实验题:求水仙花数 #### 背景介绍 在计算机科学与编程领域中,水仙花数(Narcissistic number)是一个有趣的数学概念。它指的是一个n位数(n≥3),其每个位上的数字的n次幂之和等于它本身。例如,153是一...

    VB编程水仙花数工程

    **VB编程水仙花数工程** 在编程领域,"水仙花数"是一个经典的问题,尤其在初学者的教程和练习中常见。水仙花数(也称为自恋数或 Narcissistic number)是指一个三位数,其各位数字的立方和等于这个数本身。例如,...

    21位水仙花数

    根据给定的信息,本文将对“21位水仙花数”的相关知识点进行详细解析。 ### 一、水仙花数的基本概念 水仙花数(Narcissistic number)是指一个n位数,它的每个位上的数字的n次幂之和等于它本身的一个数。例如,153...

    Python水仙花数

    **水仙花数**,又称为自恋数或阿姆斯特朗数,是指一个三位数,它的每一位数字的立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。 在Python编程中,判断一个数是否为水仙花数可以通过以下...

    判断水仙花数。水仙花数输出。水仙花.c

    水仙花数

    python实现水仙花数

    水仙花数(Python3) 水仙花数:三位数的整数=个位数的三次方+十位数的三次方+百位数的三次方

    while循环实现水仙花数

    首先什么是水仙花数? 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。 输入代码: #include #include&lt;math.h&gt; main() { int a,b,c,n; n = 100; ...

    输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。

    输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。

    matlab版水仙花数程序(两种经典方法)

    在MATLAB编程环境中,"水仙花数"(Narcissistic Number)是一个有趣的数学概念。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在本压缩包中,...

    21位水仙花数JAVA代码

    根据给定的信息,本文将详细解析“21位水仙花数JAVA代码”的知识点,包括其定义、实现原理以及代码解读。 ### 一、水仙花数简介 水仙花数是一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如...

    C语言编程实现输出100—999之间的水仙花数

    在探讨如何用C语言编程实现输出100到999之间的水仙花数之前,我们首先需要理解几个核心概念:水仙花数、循环结构、条件判断以及数学运算。 ### 水仙花数的概念 水仙花数(Narcissistic number),又称为自恋数或...

    水仙花数Java程序实现

    ### 水仙花数Java程序实现 #### 知识点概述 本篇文章将深入探讨如何使用Java编程语言实现寻找“水仙花数”的过程。首先,我们会介绍什么是水仙花数及其特点;随后,详细解析给定Java代码的具体实现方式,并在此...

    Python三位水仙花数OJ题和答案

    “3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是 一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。 请按照从大到小的顺序输出所有的3位水仙花数,请用一个“逗号+...

    判断水仙花数的算法

    在探讨“判断水仙花数的算法”这一主题时,我们首先需要理解何为水仙花数(Narcissistic number)。水仙花数是指一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个三位数,而1^3 + ...

    C#求水仙花数的算法实例

    水仙花数,又称 Narcissistic number,在数学上是指一个三位数,它的每个位上的数字的立方和等于它本身。例如,153 是一个水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。在 C# 编程中,我们可以编写一个函数来查找并...

Global site tag (gtag.js) - Google Analytics