首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在c#中存储的最高值数据类型

可以在c#中存储的最高值数据类型
EN

Stack Overflow用户
提问于 2011-02-14 07:22:15
回答 4查看 4K关注 0票数 0

我正在为我的任务写一个小程序,用来寻找质数的原根。到目前为止,该程序适用于直到13的较小质数,并给出了正确的根数。但是对于更高的素数,它只显示了更少的原根。现在我被质数41卡住了,没有显示它的原根。我使用DOUBLE数据类型进行计算,并再次尝试使用DECIMAL数据类型,但没有成功。有人知道这类问题吗?谢谢。

EN

回答 4

Stack Overflow用户

发布于 2011-02-14 07:34:43

如果您正在尝试查找大整数,您是否尝试过在.NET 4中使用BigInteger

请注意,将整数存储在double中不是一个好主意-因为并不是其范围内的每个双精度值都能被准确地存储。decimal可以精确地存储整数,但最多只能存储28或29位数字……从根本上说,这仍然是一个糟糕的想法,因为你试图表示整数。

另一方面,你所说的“固守质数41”并不是真的很清楚。你确定它是你想要的一个大整数数据类型吗?

票数 4
EN

Stack Overflow用户

发布于 2011-02-14 07:44:57

这更有可能是算法问题,而不是数据大小问题。你的算法只需要将两个小于你想要求根的质数的值相乘即可。而不是直接将候选者提升到每个小于p的幂,然后取结果mod p,从1开始,然后重复乘以您正在测试的值,并在每一步之后取结果mod p这意味着您永远不需要处理大于p * candidate的数字,并且将能够仅使用int或long来处理非常大的数字。

票数 0
EN

Stack Overflow用户

发布于 2011-02-14 07:46:44

素数总是整数,所以不需要使用双精度。如果您的计算在41失败,则问题与您正在使用的数据类型的大小无关。你需要发布你正在使用的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4987601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档