我正在尝试解决projecteuler.net上的问题,但我一直遇到一些问题.
第一个是存储大量元素的问题List<t>.在列表中存储大量数据时,我一直收到OutOfMemoryException.
现在我承认我可能没有以最好的方式做这些事情但是,有没有办法定义应用程序可以消耗多少内存?
当我满足100,000,000个元素时,它通常会崩溃:S
其次,一些问题需要增加大量数字.我使用ulong数据类型,我认为这个数字会变得非常大,但我仍然设法绕过最大的受支持的int并进入负数.
你有任何使用难以置信的大数字的技巧吗?
我一直在寻找相当长的一段时间,而且我几乎没有发现BigInteger它实际上如何保持它的数字.它们是一系列字符吗?别的什么?如何将数据转换为/从BigInteger?
从我发现的,我假设所有任意精度类,如BigInteger和BigDecimal,将数据保存为字符数组.它是如何实际工作的?还是只是人们的猜测?
我问,因为我一直在努力实现自己的实现BigInteger,但我无法弄清楚如何保持数字大于Long.MAX_VALUE(我不记得实际的数字).
提前致谢.
我转换一个String到BigInteger如下:
Scanner sc=new Scanner(System.in);
System.out.println("enter the message");
String msg=sc.next();
byte[] bytemsg=msg.getBytes();
BigInteger m=new BigInteger(bytemsg);
Run Code Online (Sandbox Code Playgroud)
现在我想要我的字符串.我正在使用,m.toString()但这给了我想要的结果.
为什么?错误在哪里,我该怎么办呢?
.NET 4.0提供了System.Numerics.BigInteger任意大整数的类型.我需要计算a的平方根(或合理的近似值 - 例如,整数平方根)BigInteger.所以我没有重新实现轮子,有没有人有一个很好的扩展方法呢?
有没有办法将a转换BigInteger成BigDecimal?
我知道你可以从a BigDecimal到a BigInteger,但是我找不到一种方法可以用Java来反过来.
我正在使用Visual Studio 2010并尝试BigInteger在C#程序中使用该类型.这种类型应该在System.Numerics命名空间中可用,但我似乎没有在.Net 4.0框架中安装它.当我using System.Numerics;在VS2010中输入" "时," Numerics" 下方会出现一个红色下划线.还有其他人有过这个问题吗?
如果是这样,你如何解决它?我刚刚重新下载并重新安装(修复).Net 4.0框架,但这没有帮助.我从来没有遇到过我写过的其他C#程序的任何问题,所以我想知道我错过了什么.
我有以下代码,当完整的二进制树是layer图层高时,它返回树中的节点数:
public static long nNodesUpToLayer(int layer) {
if (layer < 0) throw new IllegalArgumentException(
"The layer number must be positive: " + layer );
//At layer 0, there must be 1 node; the root.
if (layer == 0) return 1;
//Else, there will be 1 + 2 * (the number of nodes in the previous layer) nodes.
return 1 + (2 * nNodesUpToLayer(layer - 1));
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我输入63函数(产生这个的最小值)时,它会让我回来-1.在62,它回馈9223372036854775807,所以这似乎是由溢出引起的.
它不应该让我回到Java长期的最小值+它溢出的数量吗?无论我给它(通过62)的输入如何,它总是会返回-1 …
Hugs> 94535^445
1376320882321377050696053887661515621104890164005282153069726424773999801846841903244827702943487982707454966009456016735041878000604143500908532887464920380605164932112687039059526672109818924234920844448231612532570718657160234177285377733830104834041049076609912488237219608445995072867798430614935403219495883835042862802917980856774134757390782052200512932375660858045003581611863121089979673784484701791210379500218604466721285456487387736825167702127154268533859979529612671925052419513844416493584817268143587955662039327860394141299238613042312035808541735213479394437496215520277526351425482512084759462579494878772787079101513841720202004639843443083454387175700954018825292148776647553122504118229978165851660083576570848983047255050145168802863168613110619584686348869690774233051669081248424584219383477237544209892290799448207462345346336076966775224683516220960618177284844330167142846351091001423033864986042919757795382577032341453971393897073354841924116635150129850119992031076354249371062307034564093077675129303383786693131843907104175619570678630497198824622804914508555467550904967368926176118094672479099827962889569753303773699017596074205893197641101210911874606040804983166177455705972192827752532495287749766682029353154226049380290040508900715169403153139668217790502306177709467234413947747673881158973344492079455405942662489751581189327200960698310350121179918845099840977270519116578719881752429190273998774113278822810866144521416958558406602325070095207349450759264393913367193083149679216066539911941983836313340998945139132421885688290888674594474605510238217590823316979504437667252929278291853368754482552573193289277120902144178425726693671235675042499401282016643202758246845332593475338220708351934511933096882598943512036679145593929114103343255708217768511665236173107020739195152050863630870948954052925049746246549772984384435109578859863612603574306739909728739428192798727373799081111333186135697868385292787575475482883660605162944306327057220313320376280182432763977906971557137715710757099478269250731209785404487629107297262798803645379809868663503452656912571816192881412782623078761411808958183665272686617730596943579533808499348879195167683064937591552734375
Run Code Online (Sandbox Code Playgroud)
为什么Haskell可以计算如此大的数字,而其他语言(例如Java)不能(如此容易)?
我目前正在建立一个涉及大量集体智慧的项目.访问该网站的每个用户都会创建一个独特的配置文件,他们的数据稍后将用于为自己和其他用户计算最佳匹配.
默认情况下,Django创建一个INT(11)id字段来处理模型主键.我担心这会很快溢出(即~2.4b设备访问页面而没有事先设置cookie).如何将其更改为在MySQL中表示为BIGINT,在Django本身中表示为long()?
我发现我可以做到以下几点(http://docs.djangoproject.com/en/dev/ref/models/fields/#bigintegerfield):
class MyProfile(models.Model):
id = BigIntegerField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)
但有没有办法让它像通常的id田地一样自动增量?另外,我可以将它设为无符号,以便我可以填充更多空间吗?
谢谢!
这是我所知道的一个奇怪的问题,但我正在尝试获取文件中当前最大素数的副本.以整数形式获取数字非常简单.我跑了这个.
prime = 2**74207281 - 1
Run Code Online (Sandbox Code Playgroud)
它需要大约半秒钟,它工作得很好.操作也相当快.将它除以10(不带小数)来移动数字很快.但是,str(prime)需要很长时间.我str像这样重新实现,发现它每秒处理大约一百个数字.
while prime > 0:
strprime += str(prime%10)
prime //= 10
Run Code Online (Sandbox Code Playgroud)
有没有办法更有效地做到这一点?我在Python中这样做.我是否应该尝试使用Python,或者有更好的工具吗?
biginteger ×10
java ×5
c# ×3
.net ×2
python ×2
string ×2
bigdecimal ×1
cryptography ×1
django ×1
haskell ×1
integer ×1
largenumber ×1
primary-key ×1
primes ×1