7

我知道有一个用于所有类型的 .NET 字典和哈希表中:

internal static class HashHelpers

  • 其他地方也有公共的吗?
  • 如果不是,为什么它保留在内部不是很常用的东西吗?
  • 如果我的代码中需要素数,复制和粘贴是否可行?
4

2 回答 2

5
  1. 据我所知,.NET 中没有该表的公共版本
  2. 因为这个表不是一个范围内所有素数的表,而是一个任意选择的适合特定目的的素数子集的表(基于散列的容器的大小)
  3. 不,您应该即时生成自己的表格,或者从许多完整来源之一复制粘贴表格。
于 2012-07-30T11:26:16.110 回答
3

我无法回答您关于 HashHelpers 可用性的问题,但这里有一些您自己实现它的方法。

这里有一些关于生成素数的命令式实现的帖子: 最优雅的生成素数的方法

此外,您可以在 LINQ 中执行此操作:

var odds =
    from n in Enumerable.Range(0, int.MaxValue)
    select 3 + (long) n * 2;

var primes = (new[] { 2L }).Concat(
    from p in odds
    where ! odds.TakeWhile(odd => odd * odd <= p).Any(odd => p % odd == 0)
    select p);

资料来源:http: //jacobcarpenter.wordpress.com/2008/03/26/linq-to-prime-numbers/

编辑:不要在初始范围内使用 int.MaxValue 。将此限制在适当的范围内。

于 2012-07-30T11:25:57.117 回答