Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的大型布尔数组问题#_C#_Arrays_Primes_Boolean - Fatal编程技术网

C# C语言中的大型布尔数组问题#

C# C语言中的大型布尔数组问题#,c#,arrays,primes,boolean,C#,Arrays,Primes,Boolean,我决定写一个素数生成器作为一个简单的例子。代码非常简单: static void generatePrimes (long min, long max) { bool[] prime = new bool[max + 1]; for (long i=2; i<max+1; i++) prime [i] = true; for (long i=2; i<max+1; i++) {

我决定写一个素数生成器作为一个简单的例子。代码非常简单:

static void generatePrimes (long min, long max)
    {

        bool[] prime = new bool[max + 1];

        for (long i=2; i<max+1; i++)
            prime [i] = true;

        for (long i=2; i<max+1; i++) {
            if (prime [i]) {
                if (i>=min)
                    Console.WriteLine (i);
                for (long j=i*2; j<max+1; j+=i)
                    prime [j] = false;
            }
        }

        Console.WriteLine ();

    }
静态无效生成时间(长最小值、长最大值)
{
bool[]prime=新bool[max+1];

对于(长i=2;ino)。与C++的
vector
相反,在C中,
bool
的数组是
bool
的数组


如果您希望对值进行打包(每bool 8位),改用
位数组。

计算机可以寻址的最小信息单位是一个字节。因此
bool
存储为一个字节。你需要特殊的代码将8个bool放在一个字节中。这个类为你做这件事。

打赌它不是每个
字节一个
bool
@Blindy:你在。我不在计算机上使用IDE,但我想知道sizeof(bool)的值是多少。@Blindy:事实上,它就在sizeof页面上。sizeof(bool)=1字节。计算机可以“寻址”的最小信息单位是字节,而不是“存储”。@Dr_Asik:更准确。谢谢!我看过BitArray文档,还有BitArray(Int32)构造函数,但没有BitArray(Int64)构造函数。有没有办法创建包含超过Int32Max个元素的BitArray?如果需要更多元素,您必须卷起自己的类。一个简单的解决方案是聚合类中的多个
BitArray
,这样做的工作量最小。我想这就是我必须要做的。谢谢!“每字节8位”…也许每字节8位?@Dr_Asik Well…更确切地说,“每字节8位”"。值得一提的是,有更好的算法可以用来寻找素数。无论你如何处理所有的小细节,这都不会超过某一点。你的老师是否期望你的程序可以扩展到10亿/万亿/更多的值?我没有老师——只是想通过练习来获得一点经验我会用谷歌搜索其他算法,谢谢!