我想知道是否有人可以帮助我,我想学习编码一段时间,我的朋友建议从java开始,因为它强大而且显然相对容易所以我买了一些书,我正在学习不同的功能和元素等。然后我偶然发现了项目euler(www.projectile.net)并认为它是学习一些新东西的一种非常有趣的方式。
我接下来要做的第三个挑战就是编写一个程序,找出最大的素数因素,即600851475143' 600851475143'这当然超出了长原始数据类型的范围。我已经编写了一个适用于任何长整数的解决方案,但是我无法使用这么大的数字运行它。
到目前为止,我的朋友一直在帮助我学习目前在国外,所以我无法问他如何处理这么大的整数,所以如果有人能帮助我理解我的解决方案。非常感激。
我在计算方面非常有文化,但我的编程经验有限,所以我很欣赏普通的英语帮助,所以我可以理解它。
提前致谢,
马克
答案 0 :(得分:0)
一,' 600851475143'适合long
。你应该没事。但是,您需要注意超出该值的算术运算的溢出,例如如果你有一个while (n*n < 600851475143)
的步骤,那么在某个时候n * n
会更大 - 确保它不会溢出你的工作。话虽如此,Java中的最大长度是2 ^ 63-1 ......你真的应该没问题。
二,您可以使用BigInteger
来解决此数量的问题。
答案 1 :(得分:0)
我正在分享一个示例,例如我如何在for循环下使用它来查找任意数量的阶乘
BigInteger factorial = new BigInteger("1");
for (int i = 1; i <= n; i++) {
factorial = factorial.multiply(new BigInteger(i + ""));
}
return factorial.toString();