java中的整数大于long

问题描述 投票:0回答:2

我想知道是否有人可以帮助我,我想学习编码一段时间,我的朋友建议从java开始,因为它的强大和显然相对容易所以我买了几本书,我正在努力学习不同的功能和元素等。然后我偶然发现了项目euler(www.projectile.net),并认为这是学习一些新东西的一种非常有趣的方式。

我正在进行第三个挑战,那就是编写一个找到'600851475143'的最大素数因子的程序,当然它超出了原始数据类型的范围。我已经编写了一个适用于任何长整数的解决方案,但是我无法使用这么大的数字运行它。

到目前为止,我一直在帮助我学习的朋友目前在国外,所以我无法问他如何处理这么大的整数,所以如果有人能帮我理解解决方案,我会非常感激。

我在计算方面非常有文化,但我的编程经验有限,所以我很欣赏普通的英语帮助,所以我可以理解它。

提前致谢,

biginteger
2个回答
0
投票

一,'600851475143'适合long。你应该没事。但是,您需要注意超出该值的算术运算的溢出,例如如果你有一个步骤,while (n*n < 600851475143)然后在某一点n * n将更大 - 这是你的工作,以确保它不会溢出。话虽这么说,Java中的最大长度是2 ^ 63-1 ......你真的应该没问题。

二,你可以使用BigInteger来解决这个大小的问题。


0
投票

我正在分享一个例子,比如我如何在for循环中使用它来查找任何数字的阶乘

    BigInteger factorial = new BigInteger("1");
   for (int i = 1; i <= n; i++) {
       factorial = factorial.multiply(new BigInteger(i + ""));
   }
   return factorial.toString();
© www.soinside.com 2019 - 2024. All rights reserved.