C#找到大素数

时间:2013-12-07 07:56:02

标签: c#

我正在用C#编写一个程序,它会找到所有素数达到UInt64的最大值,除非有一个大于UInt64的数值数据类型。我已经编写了简单的程序,但出于某种原因,即使它们不应该是素数,它也会返回我检查的每个数字作为素数。这就是我所拥有的:

static void Main(string[] args)
    {
        UInt64 count = 0;
        List<UInt64> primes = new List<UInt64>();
        bool prime = true;

        do
        {
            for (UInt64 i = 2; i < count; i++)
            {
                if ((count % i) == 0)
                {
                    prime = false;
                }
            }

            if (prime == true)
            {
                primes.Add(count);
                Console.WriteLine(count);
            }

            count++;
            prime = true;

        } while (count < UInt64.MaxValue);
    }

我的算法有问题吗?因为每次我检查一个素数时,它认为每个数字都是素数并且会打印出来。

2 个答案:

答案 0 :(得分:2)

我将您的代码复制粘贴到Visual Studio中,运行它并且完美运行。算法很合理,但你绝对可以优化它。

答案 1 :(得分:0)

首先,0和1不是素数,它是一个非常慢的算法。你应该考虑一些最佳代码。像this一样 但是你的代码应该可以正常工作。