首页 > 解决方案 > 埃拉托色尼筛,代表数字的倍数

问题描述

我正在尝试使用 Erathosthene 筛确定素数,使用布尔数组(每个值都以假值开头)
这是我的问题:

这就是我所做的
在此处输入图像描述

有用的链接 https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

标签: c#arrays

解决方案


您的代码超出了界限索引。以下代码应该可以工作:

int n = 120;
        bool[] array = new bool[n];
        for (int i = 0; i < n; i++)
        {
            if (i != 1)
            {
                if (2 * i < n)
                    array[2 * i] = true;
                if (3 * i < n)
                    array[3 * i] = true;
                if (5 * i < n)
                    array[5 * i] = true;
                if (7 * i < n)
                    array[7 * i] = true;
            }

            if (array[i] == false)
            {
                Console.WriteLine(i);
            }
        }

推荐阅读