如何得到所有的“水仙花数”?
代码是有了
但是由于效率的原因,没有办法迅速执行完
高手帮忙优化一下吧
这是目前的执行结果,后面的数出不来了
但是由于效率的原因,没有办法迅速执行完
高手帮忙优化一下吧
import java.math.*;
import java.util.*;
public class NarcissisticNumber {
public static void main(final String[] args) {
System.out.println("水仙花数列表");
for (BigInteger bigInteger = new BigInteger("0");
!bigInteger.equals(new BigInteger("115132219018763992565095597973971522402"));
bigInteger = bigInteger.add(new BigInteger("1"))) {
if (isNarcissisticNumber(bigInteger)) {
System.out.println(getDateTime() + "\t" + bigInteger);
}
}
}
/**
* 判断一个数是否为水仙花数:一个N位整数,其各位数字的N次方的和等于该数本身
*
* @param number
* @return 当输入的参数为水仙花数时返回true,否则返回false
*/
public static boolean isNarcissisticNumber(final BigInteger number) {
BigInteger sumOfDigitPower = new BigInteger("0"); // 各位数字的N次方的和
char[] digitArray = number.toString().toCharArray(); // 各位数字的数组
for (char digit : digitArray) {
sumOfDigitPower = sumOfDigitPower.add( // 求和
BigInteger.valueOf(
Character.digit(digit, 10) // 各位数字
).pow(digitArray.length) // N次方
);
}
return sumOfDigitPower.equals(number);
}
/**
* @return 返回包含当前日期和时间的字符串
*/
public static String getDateTime() {
Calendar calendar = Calendar.getInstance();
return ""
+ calendar.get(Calendar.YEAR) + "/"
+ (calendar.get(Calendar.MONTH) + 1) + "/"
+ calendar.get(Calendar.DATE) + " "
+ calendar.get(Calendar.HOUR_OF_DAY) + ":"
+ calendar.get(Calendar.MINUTE) + ":"
+ calendar.get(Calendar.SECOND) + ":"
+ calendar.get(Calendar.MILLISECOND);
}
}
这是目前的执行结果,后面的数出不来了
水仙花数列表
2014/6/21 12:18:32:22 0
2014/6/21 12:18:32:68 1
2014/6/21 12:18:32:68 2
2014/6/21 12:18:32:68 3
2014/6/21 12:18:32:68 4
2014/6/21 12:18:32:68 5
2014/6/21 12:18:32:68 6
2014/6/21 12:18:32:68 7
2014/6/21 12:18:32:68 8
2014/6/21 12:18:32:68 9
2014/6/21 12:18:32:84 153
2014/6/21 12:18:32:84 370
2014/6/21 12:18:32:84 371
2014/6/21 12:18:32:84 407
2014/6/21 12:18:32:240 1634
2014/6/21 12:18:32:349 8208
2014/6/21 12:18:32:380 9474
2014/6/21 12:18:32:939 54748
2014/6/21 12:18:33:60 92727
2014/6/21 12:18:33:61 93084
2014/6/21 12:18:33:998 548834
2014/6/21 12:18:36:63 1741725
2014/6/21 12:18:40:52 4210818
2014/6/21 12:18:49:103 9800817
2014/6/21 12:18:49:303 9926315
2014/6/21 12:19:14:473 24678050
2014/6/21 12:19:14:473 24678051
2014/6/21 12:21:5:730 88593477
2014/6/21 12:22:47:128 146511208
...全文
相关推荐
python实现“水仙花数”
```pythonif cubed_sum == num: print(f"{num} 是一个水仙花数!")else: print(f"{num} 不是水仙花数.")
c代码-打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
在编程领域,"水仙花数"是一个经典的算法问题,主要涉及到数字处理和循环结构的应用。这个题目要求我们用C语言编写程序,找出并打印所有三位的水仙花数。下面我们将详细探讨如何实现这个功能。
python打印n位数“水仙花数”(实例代码)
本篇文章主要介绍了如何使用Python编程语言实现n位数“水仙花数”的查找功能。水仙花数,也称为阿姆斯特朗数,是指一个n位数,其每一位数字的n次幂之和等于该数本身。文章首先通过实例展示了如何找到3位数
C++水仙花数的实现
如果满足条件则打印出来:```cppint main() { for (int i = 100; i < 1000; i++) { if (isNarcissistic(i)) { std::cout << "水仙花数
C语言编程求水仙花数
在计算机编程领域,"水仙花数"是一个有趣的概念,主要与数字的算术特性相关。水仙花数,也称为 Narcissistic number,在中国的计算机科学教育中常见于C语言的初学者练习。


Java SE
